2016-10-04 96 views
0

我必须基于包含文本列的mysql查询创建Excel报表。其中一列存储图像的绝对路径。我想知道是否可以创建包含图像可见的报告(如ole?)。我可以在从SQL查询创建的Excel报告中包含图像吗?

基本上,在Excel中,我可以显示图像如果我有它的路径?

+0

这是可能的 - 使用Excel VBA(或任何其他编程语言,可以马调整excel对象模型)。但我不确定这是不是一个好主意。这会使excel文件变得庞大,而且你必须处理图像高度。也许你可以通过使它成为超链接来妥协? – Shadow

+0

PHPExcel库中有一些函数允许您执行此操作 – Hexana

回答

1

你可以用PHPExcel做到这一点。首先,你需要下载最新版本:https://phpexcel.codeplex.com/

这里是它的一个例子是使用:

include 'PHPExcel.php'; 

// Create new PHPExcel object 
$objPHPExcel = new PHPExcel(); 

// Set properties 
$objPHPExcel->getProperties()->setCreator("Jobin Jose"); 
$objPHPExcel->getProperties()->setLastModifiedBy("Jobin Jose"); 
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHPExcel classes."); 

// Add some data 
// echo date('H:i:s') . " Add some data\n"; 
$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello'); 
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!'); 
//$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello'); 
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!'); 
$objPHPExcel->getActiveSheet()->setTitle('Simple'); 
$gdImage = imagecreatefromjpeg('uploads/t12.jpg'); 
// Add a drawing to the worksheetecho date('H:i:s') . " Add a drawing to the worksheet\n"; 
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); 
$objDrawing->setName('Sample image'); 
$objDrawing->setDescription('Sample image'); 
$objDrawing->setImageResource($gdImage); 
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); 
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); 
$objDrawing->setHeight(150); 
$objDrawing->setCoordinates('C1'); 
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); 
// Echo done 
echo date('H:i:s') . " Done writing file.\r\n"; 

,因为它使用2007的Excel类如果你想在上面的代码将创建一个“XLSX”格式的文件“XLS”格式只是与2005年类尽量不为得到更改文件格式为“XLS”,而2005年使用

here为例

相关问题