2009-05-15 4 views
5

Tôi đã tìm kiếm một lớp tạo tệp Excel tốt và vẫn chưa tìm thấy - vấn đề số một của tôi là tôi mặc dù tôi có thể lấy tệp được xuất để mở trong Excel (chạy 2007), tôi luôn nhận được cảnh báo rằng "tệp ở định dạng khác với đuôi tệp".Tạo tệp/xuất bản PHP Microsoft Excel

Tôi nhận thấy rằng việc xuất Excel trong phpMyAdmin thậm chí còn tạo ra thông báo cảnh báo nói trên.

Những người dùng khác sử dụng mã nào cho yêu cầu chung này?

Cập nhật nhanh Nếu tôi đặt phần mở rộng tệp của tệp Excel được tạo dưới dạng xml nó mở trong trình duyệt (mặc dù tôi đang gửi tiêu đề chính xác), nhưng nếu tôi chọn lưu tệp xml và sau đó mở nó từ Excel, nó hoạt động mà không có bất kỳ cảnh báo nào! Thật không may, đó là rắc rối hơn cho người sử dụng hơn là chỉ cần nhấp vào 'Tiến hành anyway' với cảnh báo tôi nhận được. Còn ý tưởng nào nữa không?

Trả lời

2

tôi đã phát hiện ra rằng việc thêm những điều sau đây, dưới sự khai xml trong file Excel được tạo ra tôi, đảm bảo Excel mở file với phần mở rộng tập tin xml (chứ không phải là trình duyệt web):

<?mso-application progid=\"Excel.Sheet\"?> 

Tôi cũng thiết lập các tiêu đề sau trong php:

// deliver header (as recommended in php manual) 
header('Content-Type: application/vnd.ms-excel; charset=UTF-8'); 
header('Content-Disposition: attachment; filename="' . $filename . '.xml"'); 
2

Sử dụng Spreadsheet_Excel_Writer từ PEAR

hoặc

Viết hồ sơ cho CSV format.
Nhưng sử dụng Microsoft vượt trội hiểu biết về csv: Một dấu chấm phẩy (;) như seperator

+0

tôi đã lấy một cái nhìn tại các gói PEAR, có vẻ như rất nhiều việc để thực hiện - cộng với tôi không chắc chắn nó sẽ giải quyết vấn đề của tôi , có vẻ như chỉ có hiệu lực với Excel 2007. – BrynJ

+0

Không sử dụng gói PEAR, nó đã lỗi thời! Nó đã được thử nghiệm từ năm 2006. Sử dụng PHPExcel thay thế !!! – markus

0

tập tin có định dạng khác nhau mà phần mở rộng tập tin

Các bạn đã thử lưu file với tập tin khác sự mở rộng? Giống như "foo.xlsx" thay vì "foo.xls".

+0

Tôi có, có - xls, xlsx và xml - tất cả đều có cùng kết quả. Tôi đoán nó không đúng theo cách nào đó, nhưng tôi không chắc chính xác là gì. – BrynJ

+0

Ok, chỉ để thêm vào ở trên - trong thực tế thực tế, nếu tôi đặt phần mở rộng tập tin như xml nó sẽ mở ra trong trình duyệt (mặc dù tôi đang gửi các tiêu đề chính xác).Nếu tôi chọn lưu tệp xml và sau đó mở nó từ Excel, nó hoạt động mà không có bất kỳ cảnh báo nào! Thật không may, đó là rắc rối hơn cho người sử dụng hơn là chỉ cần nhấp vào 'Tiến hành anyway' với cảnh báo tôi nhận được. – BrynJ

2

Bạn cũng vô hiệu hóa các DialogBox, sử dụng regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Start -> Run -> regedit
  • Đến "HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Office \ 12.0 \ EXCEL \ AN NINH"
  • DWORD mới
  • Nhập "ExtensionHardening" làm tên và 0 làm giá trị
+0

Thú vị, nhưng không thực sự là một giải pháp khả thi cho một ứng dụng web mặc dù +1 anyway. –

+0

+1 - Tôi có thể sử dụng điều này thực sự, vì tôi đang cung cấp chức năng này trong khu vực quản trị của ứng dụng web, vì vậy người dùng là hữu hạn (đó là ứng dụng riêng biệt). – BrynJ

8
+0

Cảm ơn bạn đã liên kết - nó trông giống như một lớp học rất toàn diện, thành thật mà nói nó vượt quá yêu cầu của tôi. – BrynJ

+1

Bạn không nên sợ kích thước khi chất lượng tốt. Tốt hơn nhiều so với sử dụng lớp PEAR đã lỗi thời. – markus