2016-10-04 1 views
0

Мне нужно создать отчет Excel, основанный на запросе mysql, который содержит текстовые столбцы. В одном из этих столбцов хранится абсолютный путь изображения. Мне интересно, можно ли создать отчет, включая изображение, видимое (как ole?).Можно ли включить изображение в отчет Excel, созданный из SQL-запроса?

В принципе, в Excel, могу ли я показать изображение Если у меня есть его путь?

+0

это возможно - с помощью Excel VBA (или любого другого программирования язык, который может nipulate модель объекта 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"; 

Приведенный выше код создаст «XLSX» отформатированный файл, так как он использует 2007-классы первенствовать Если вы хотите формат «XLS» просто попробовать с 2005 класса не для получения изменить формат файл «XLS» при использовании 2005.

См here для примера