2012-03-02 36 views
7

Tôi hiện có nàytải file excel vào PHP_Excel từ biến

file_put_contents($tmpfile, $attachments[0]['body']); 
$objPHPExcel = PHPExcel_IOFactory::load($tmpfile); 

Các tập tin tôi đọc được chiết xuất từ ​​một email, vì vậy thay vì sau đó ghi nó vào một tempfile Tôi muốn đọc nó trực tiếp vào phpexcel từ một chuỗi (nếu điều đó có ý nghĩa)

$objPHPExcel = PHPExcel_IOFactory::load($attachments[0]['body']); 

Tôi đã xem hướng dẫn sử dụng excel php nhưng không thể xem cách thực hiện, bất kỳ ý tưởng nào?

Trả lời

5

PHPExcel không cung cấp phương thức tải trực tiếp từ chuỗi thay vì từ tệp. Là một thay thế để thực sự tạo ra một tập tin hệ thống tập tin vật lý cho $ tmpfile tuy nhiên, bạn có thể sử dụng php://memory hoặc php://temp

+1

Sự cố có liên quan được mở trong trình theo dõi vấn đề PHPExcel: https://github.com/PHPOffice/PHPExcel/issues/677 – CubicleSoft

+0

Làm cách nào để thực hiện? 'PHPExcel_IOFactory :: load ('php: // temp')' có vẻ sai ... Bạn có ý tưởng gì không? Sẽ có bất kỳ vấn đề với zip hay như vậy? – robsch

+0

@robsch - không rõ ràng ý bạn là gì –

2

Trước tiên, bạn phải tạo trình đọc cho tệp excel và sau đó tải tệp đó từ trình đọc được xây dựng của bạn. Hãy xem this để biết chi tiết đầy đủ.

13

Điều này có thể không phải là giải pháp thanh lịch nhất nhưng đây là cách tôi giải quyết nó:

public function fromString($data=null) 
{ 
    $file = tempnam(sys_get_temp_dir(), 'excel_'); 
    $handle = fopen($file, "w"); 
    fwrite($handle, $data); 
    $return = \PHPExcel_IOFactory::load($file); 
    fclose($handle); 
    unlink($file); 
    return $return; 
} 
+0

Điều này sẽ được đánh dấu là câu trả lời chính xác vì không thể sử dụng lại bộ nhớ và tạm thời khi đã đóng. Giải pháp này không lý tưởng nhưng đó là cách duy nhất mà PHPexcel/phpspreadsheet chấp nhận dữ liệu từ một chuỗi – Avenyet

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