2012-01-24 30 views
5

Xin chào, tôi muốn phân tích cú pháp tệp excel bằng khung công tác zend. Tôi đã đến Zend Developer Zone và tìm thấy giải pháp để tải xuống phpexcelreader. Tôi đã tải xuống mã thiết lập dự án tại localhost và chạy mã. Khi tôi treid để đọc một tập tin .xlsx nó tạo ra một lỗiTên tệp feed1.xls không thể đọc được trong php

The filename feed1.xlsx is not readable 

Tôi đã lưu tập tin ở định dạng .xls và chạy các mã phân tích các tập tin thành công. Bây giờ tôi muốn thực hiện điều này trong dự án của tôi được phát triển trong Zend framework. Tôi đã tạo ra một mô hình, và trong dự án của tôi và require_once đã chỉnh sửa excelreader ở đầu dự án của tôi như thế này.

require_once 'Excelreader/Excel/reader.php'; 
class ExcelreaderModel extends Zend_Db_Table 
{ 
function readFile() 
{ 
    $data = new Spreadsheet_Excel_Reader(); 

    // Set output Encoding. 
    $data->setOutputEncoding('CP1251'); 

    //$data->read('Excelreader/Excel/feed1.xls'); 
    $data->read('feed1.xls'); 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
} 
} 

Tôi gọi chức năng mô hình này trong bộ điều khiển của mình. Nhưng nó tạo ra cùng một lỗi mà tôi tìm thấy trên localhost bằng cách sử dụng các tệp .xlsx. Nhưng tôi đang đọc tập tin .xls được phân tích cú pháp bởi mã chạy tại dự án đơn giản trên localhost.I cũng đang chạy khung công tác zend tại địa phương.

Có gì sai trong mã của tôi? Hoặc là có cách nào để làm cùng một nhiệm vụ.?

+0

Nếu bạn đang sử dụng Spreadsheet_Excel_Reader thì thẻ phpexcel không thích hợp ... phpexcel là một thư viện cụ thể đó không phải là thư viện Spreadsheet_Excel_Reader –

+0

cũng sẽ không Spreadsheet_Excel_Reader đọc .xlsx file ... cậu thực sự tiết kiệm tệp .xlsx gốc của bạn dưới dạng Excel95.xls, hoặc chỉ cần đổi tên nó? –

+0

@MarkBaker Tôi đang lưu tệp gốc dưới định dạng .xls. Còn có những giải pháp nào nữa ko? –

Trả lời

2

Như tốt nhất mà tôi có thể nói, các lỗi bạn đang nhìn thấy được thiết lập bởi dòng mã này:

if(!is_readable($sFileName)) { 
    $this->error = 1; 
    return false; 
} 

Đối với một lý do này hay cách khác, nó không thể đọc các tập tin bạn đang đưa ra, hoặc là bởi vì có một quyền/vấn đề người dùng hoặc đường dẫn đến tệp sai.

Nếu bạn đang sử dụng máy chủ * nix, bạn nên đảm bảo người dùng đang chạy máy chủ web có quyền đọc tệp excel. Máy chủ web có thể đang chạy với tư cách người dùng khác với người sở hữu tệp. Bạn cũng có thể thử thiết lập các điều khoản để 666.

Nếu nó chỉ ins't tìm tệp, cung cấp một đường dẫn đầy đủ có thể giúp đỡ, (ví dụ $data->read('/usr/local/apache2/htdocs/Excelreader/feed1.xls');

3

Tôi nghĩ rằng vấn đề là ở kiểu mã hóa của .xlxs tập tin chứ không phải trong Nếu bạn thay đổi sự cho phép, nó sẽ không hoạt động cho bạn. Vấn đề là trong OLE_IDENTIFIER (��ࡱ�).

Vì vậy, dữ liệu tập tin của bạn phải bắt đầu với dữ liệu ��ࡱ�. ?

+0

Nếu bạn có câu hỏi riêng (sự kiện nếu tương tự), hãy tạo một câu hỏi riêng cho nó. –

+0

có yuo tìm thấy giải pháp cho vấn đề này. Có cùng một vấn đề –

1

Lỗi có thể chắc chắn mang tính mô tả hơn. Tôi đã thêm vào một hàm bao bọc bên trong hàm read() như sau:

if (file_exists($sFileName)) 
{ 
    ... 
}else{ 
    die('The file ' . $sFileName . ' was not found'); 
} 

Và chắc chắn đủ, tôi đã tìm trong thư mục sai toàn bộ thời gian !!

1

mb_internal_encoding("8bit"); trong phần đầu của tệp php đã thực hiện thủ thuật cho tôi.

0

Hãy chuyển đổi xlsx của bạn để xls và nó sẽ làm việc :)

nó đang làm việc cho tôi, bạn có thể thử nó.

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