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

Roc*_*och 6 php excel heroku export-to-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;
}
Run Code Online (Sandbox Code Playgroud)

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

tri*_*0x2 9

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

一旦安装了PHPExcel,就可以使用类似的东西来插入:

$objDrawing = new PHPExcel_Worksheet_Drawing();

$objDrawing->setPath('./images/picture.png');

$objDrawing->setCoordinates('A11');
Run Code Online (Sandbox Code Playgroud)


Dru*_*ver 8

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

以下是有关如何操作的完整说明:

首先,下载库并将其放在网站的逻辑位置:

sites/all/libraries/phpexcel/Classes
Run Code Online (Sandbox Code Playgroud)

现在,您可以在网站的任何位置创建您希望它的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 \>');
Run Code Online (Sandbox Code Playgroud)

2)包括Excel Classes文件:

/** Include PHPExcel */
require_once $_SERVER["DOCUMENT_ROOT"] . "/sites/all/libraries/phpexcel/Classes/PHPExcel.php";
Run Code Online (Sandbox Code Playgroud)

3)创建"PHPExcel"对象:

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

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");
Run Code Online (Sandbox Code Playgroud)

5)将一些数据添加到"B1"单元格:

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

6)创建一个"绘图"对象,我们可以将图像加载到其中.请记住使用Web服务器中的有效图像URL替换图像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);
Run Code Online (Sandbox Code Playgroud)

7)将图像复制到"$ objPHPExcel"对象的"A1"单元格中.

$objDrawing->setCoordinates('A1');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
Run Code Online (Sandbox Code Playgroud)

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__));
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

这就是全部!