我正在使用phpspreedsheet加载excel,对其进行更新并再次保存...我发现的问题是它不能为图形保存很好,当您打开时Excel它告诉您典型的事情是存在问题,并且"您是否希望我们尝试恢复尽可能多的内容?"并删除图形。
Excel已在文件级别完成验证和维修。这本书的某些部分可能已经修复或丢弃。删除零件:文档的零件属性。(绘图形式(删除部分:图形形式。删除零件:绘图表格。
$reader = IOFactory::createReader('Xlsx');
$reader->setIncludeCharts(true);
$writer = new PhpOfficePhpSpreadsheetWriterXlsx($this->spreadsheet);
$writer->setIncludeCharts(true);
要包含图纸,您应该使用类似的东西:
$drawing = new PhpOfficePhpSpreadsheetWorksheetDrawing();
$drawing->setName('Logo');
$drawing->setDescription('Logo');
$drawing->setPath('./images/officelogo.jpg');
$drawing->setCoordinates('B15');
$drawing->setHeight(36);
$drawing->setWorksheet($spreadsheet->getActiveSheet());
用于阅读所有图像,您应该使用文档中的代码:
$i = 0;
foreach ($spreadsheet->getActiveSheet()->getDrawingCollection() as $drawing) {
if ($drawing instanceof PhpOfficePhpSpreadsheetWorksheetMemoryDrawing) {
ob_start();
call_user_func(
$drawing->getRenderingFunction(),
$drawing->getImageResource()
);
$imageContents = ob_get_contents();
ob_end_clean();
switch ($drawing->getMimeType()) {
case PhpOfficePhpSpreadsheetWorksheetMemoryDrawing::MIMETYPE_PNG :
$extension = 'png';
break;
case PhpOfficePhpSpreadsheetWorksheetMemoryDrawing::MIMETYPE_GIF:
$extension = 'gif';
break;
case PhpOfficePhpSpreadsheetWorksheetMemoryDrawing::MIMETYPE_JPEG :
$extension = 'jpg';
break;
}
} else {
$zipReader = fopen($drawing->getPath(),'r');
$imageContents = '';
while (!feof($zipReader)) {
$imageContents .= fread($zipReader,1024);
}
fclose($zipReader);
$extension = $drawing->getExtension();
}
$myFileName = '00_Image_'.++$i.'.'.$extension;
file_put_contents($myFileName,$imageContents);
}