2011-02-09 72 views
5

Tôi đang sử dụng Bánh; như tôi mở file excel trong trình duyệt với một hàm tạo:PHPExcel trong CakePHP: lỗi - tệp excel không tương thích hoặc bị lỗi

Tôi nhận được lỗi này từ Microsoft Excel:

Excel không thể mở 'danh sách .xlsx Groups' tập tin bởi vì các tập tin định dạng hoặc đuôi tệp không phải là hợp lệ. Xác minh rằng tệp không bị bị hỏng và tệp mở rộng khớp với định dạng của tệp .

Tôi đã thử xóa không gian trong tên tệp sau khi tải xuống từ trình duyệt và mở lại, nó hiển thị cùng lỗi như trên. Bất cứ ai có kinh nghiệm này và giải quyết nó? hoặc bất kỳ đầu mối nào cho những gì đang xảy ra?

Về cơ bản tệp excel được mở nhưng trống do lỗi ở trên. Tôi đã đọc một vấn đề tương tự mà nói rằng loại bỏ không gian ở phần cuối của ?> thẻ trong một trong các tập tin thành phần. Nhưng tôi không biết tập tin thành phần nào ..?

P.S. Tôi đang sử dụng Microsoft Excel 2010, đây có phải là lý do không? Hiện PHPExcel hiện đang làm việc cho một - "Microsoft Excel 2010"?

Trả lời

2

Trình soạn thảo PHPExcel Excel2007 sẽ tạo tệp xlsx hợp lệ có thể đọc bởi Excel 2007, Excel 2010 và Excel 2003 với gói tương thích. Tôi thực sự làm hầu hết các thử nghiệm của tôi với Excel2010 và Excel2003.

Điều đầu tiên cần kiểm tra là nếu có bất kỳ ký tự giả nào được lặp lại vào tệp bằng cách mở nó trong trình soạn thảo văn bản. Nếu có, thì những văn bản đó có thể là hướng dẫn để xác định vấn đề. Đặc biệt, hãy chú ý đến khoảng trắng hoặc dấu ngắt dòng như các ký tự đầu tiên trong tệp.

Tệp xlsx là tập hợp xml tệp nén, vì vậy nếu không có chuỗi văn bản rõ ràng (bên cạnh chữ ký PK) hiển thị trong trình chỉnh sửa văn bản, hãy thử giải nén nó (sử dụng bất kỳ thứ gì là thích hợp cho nền tảng điều hành của bạn) . Điều đó có thể cung cấp các thông báo lỗi khác có thể giúp chẩn đoán sự cố.

Nếu bạn đang chạy trên nền tảng Windows, thì có một số phiên bản lỗi của phần mở rộng ZipArchive (php_zip.dll) có thể gây ra lỗi này. Mã SVN mới nhất cho phép bạn sử dụng PCLZip để thay thế cho ZipArchive.

Nếu bạn vẫn gặp sự cố, hãy thử đăng bài trên diễn đàn thảo luận PHPExcel với tất cả các chi tiết.

1

Thiết lập bố trí trống với tiêu đề thích hợp cho việc tạo/tải file excel của bạn

Dưới đây là ví dụ với tập tin PDF

<?php 
header("Content-type: application/pdf"); 
echo $content_for_layout; 
?> 
0

Bạn đã thử này?

<?php 
$file="test.xls"; 
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>"; 
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$file"); 
echo $test; 
?> 

Cảm ơn

0

Tôi buộc người dùng của tôi để tải tờ Excel sử dụng đoạn mã sau vào điều khiển của tôi (tôi sử dụng PHPExcel để tạo các báo cáo trên các ứng dụng CakePHP của tôi):

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.'myreportname.xls"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

$this->render(false); 
  • $ objPHPExcel | Đây là trang tính của tôi, đối tượng PHPExcel()

  • $ this-> render (false); | Để tránh mọi thứ được xuất ra trình duyệt của khách hàng, hãy đảm bảo bạn không sửa đổi tệp Excel

Các vấn đề liên quan