使用PHP将图像添加到excel文件

我正在使用以下函数将内容添加到使用PHP的Excel文件中:

function __writeString($row, $col, $value ) { $L = strlen($value); $this->file .= pack("ssssss", 0x204, 8 + $L, $row, $col, 0x0, $L); $this->file .= $value; } 

我想知道如何以同样的方式在我的单元格中添加图像,例如通过提供其url作为值。

看看这个: PHPExcel 。 它将为您提供从PHP读取和写入Excel所需的所有工具。

一旦你安装了PHPExcel,你可以使用这样的插入:

 $objDrawing = new PHPExcel_Worksheet_Drawing(); $objDrawing->setPath('./images/picture.png'); $objDrawing->setCoordinates('A11'); 

“Trigun”,你的build议确实有帮助。 我可以从http://phpexcel.codeplex.com/releases下载最新的PHPExcel Classes,并立即开始运行。 但是,花了一些额外的时间来弄清楚如何将图像添加到Excel文件。 你的解释没有多大帮助。

这里是一个完整的描述如何做到这一点:

首先,下载图书馆并将其放置在您网站的合理位置:

 sites/all/libraries/phpexcel/Classes 

现在,您可以在您网站的任何地方创build您的PHP文件,并将以下内容添加到文件中:

1)允许在屏幕上打印错误信息:

 error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br \>'); 

2)包含Excel类文件:

 /** Include PHPExcel */ require_once $_SERVER["DOCUMENT_ROOT"] . "/sites/all/libraries/phpexcel/Classes/PHPExcel.php"; 

3)创build“PHPExcel”对象:

 // Create new PHPExcel object echo date('H:i:s') , " Create new PHPExcel object" , EOL; $objPHPExcel = new PHPExcel(); 

4)设置一些Excel元数据,如标题和描述。

 // Set document properties echo date('H:i:s') , " Set document properties" , EOL; $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("PHPExcel Test Document") ->setSubject("PHPExcel Test Document") ->setDescription("Test document for PHPExcel, generated using PHP classes.") ->setKeywords("office PHPExcel php") ->setCategory("Test result file"); 

5)添加一些数据到“B1”单元格:

 // Add some data echo date('H:i:s') , " Add some data" , EOL; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('B1', 'Hello world!') 

6)创build一个“绘图”对象,我们可以加载我们的图像。 请记住要将图片urlreplace为您的networking服务器中的有效图片url:

 // Add a drawing to the worksheet echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; $objDrawing = new PHPExcel_Worksheet_Drawing(); $objDrawing->setName('Thumb'); $objDrawing->setDescription('Thumbnail Image'); $objDrawing->setPath($_SERVER["DOCUMENT_ROOT"] . '/sites/default/files/product-images/10098.jpg'); $objDrawing->setHeight(21); 

7)将图像复制到我们的“$ objPHPExcel”对象的“A1”单元格中。

 $objDrawing->setCoordinates('A1'); $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); 

8)将“$ objPHPExcel”对象保存为Excel文件格式。

 // Save Excel 95 file echo date('H:i:s') , " Write to Excel5 format" , EOL; $callStartTime = microtime(true); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save(str_replace('.php', '.xls', __FILE__)); 

9)在屏幕上打印一些有用的信息:

 $callEndTime = microtime(true); $callTime = $callEndTime - $callStartTime; echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; // Echo memory usage echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; // Echo memory peak usage echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; // Echo done echo date('H:i:s') , " Done writing files" , EOL; echo 'Files have been created in ' , getcwd() , EOL; 

这是整个事情!