2012-03-02 164 views
7

excel文件到PHP_Excel我現在有這個負荷變量

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

文件我正在讀是從電子郵件中提取,因此而不是將其寫入到一個臨時文件 我想直接讀入phpexcel從字符串(如果是有道理的)

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

我已經看過了PHP的創先爭優手冊,但看不出如何做到這一點,任何想法?

回答

5

PHPExcel不提供從字符串加載而不是從文件加載的直接方法。作爲替代,以實際創建了$ TMPFILE一個物理文件系統文件,雖然,你可能能夠使用php://memoryphp://temp

+1

相關問題在PHPExcel問題跟蹤器中打開:https://github.com/PHPOffice/PHPExcel/issues/677 – CubicleSoft 2015-09-16 05:38:53

+0

該怎麼辦? 'PHPExcel_IOFactory :: load('php:// temp')'似乎是錯的...你有什麼想法嗎?會不會有任何問題與拉鍊等? – robsch 2015-12-16 12:08:43

+0

@robsch - 不清楚你的意思 – 2015-12-16 12:16:23

2

您必須先爲excel文件創建一個閱讀器,然後從您構造的閱讀器加載該文件。請查看this瞭解詳細信息。

13

這可能不是最完美的解決方案,但這裏是我如何解決它:

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

這應該被標記爲正確答案,因爲php://一旦關閉,內存和臨時數據就不能重新使用。這種解決方案並不理想,但它是PHPexcel/phpspreadsheet接受字符串數據的唯一方式 – Avenyet 2018-03-05 11:54:30