Reputation: 10214
I currently have this
file_put_contents($tmpfile, $attachments[0]['body']);
$objPHPExcel = PHPExcel_IOFactory::load($tmpfile);
The file I am reading is extracted from an email, so rather then writing it to a tempfile I would like to read it directly into phpexcel from a string (if that makes sense)
$objPHPExcel = PHPExcel_IOFactory::load($attachments[0]['body']);
I have looked at the php excel manual but can't see how to do it, any ideas?
Upvotes: 10
Views: 9743
Reputation: 152
You must first create a reader for the excel file and then load that file from your constructed reader. Take a look at this for full details.
Upvotes: 2
Reputation: 212522
PHPExcel provides no direct method for loading from a string rather than from a file. As an alternative to actually creating a physical filesystem file for $tmpfile though, you might be able to use php://memory
or php://temp
Upvotes: 4
Reputation: 5218
This might not be the most elegant solution but here is how I solved it:
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;
}
Upvotes: 21