如何在不同的单元格中保存包含不同行高的图像的Excel文件?

时间:2017-01-22 13:31:15

标签: php excel phpexcel

我正在尝试使用PHPExcel,并根据其示例编写了此代码:

<?php

require_once "QueryHandler.php";

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

/** Include PHPExcel */
require_once 'PHPExcel/Classes/PHPExcel.php';


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

// Set document properties
$objPHPExcel->getProperties()->setCreator("Lajos Arpad")
                             ->setLastModifiedBy("Lajos Arpad")
                             ->setTitle("Import Test Foto")
                             ->setSubject("Import Test Foto")
                             ->setDescription("Import Test Foto")
                             ->setKeywords("office PHPExcel php")
                             ->setCategory("Test result file");


// Add some data
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'cod_comanda')
            ->setCellValue('B1', 'Foto 1')
            ->setCellValue('C1', 'Foto 2')
            ->setCellValue('D1', 'Foto 3')
            ->setCellValue('E1', 'Foto 4')
            ->setCellValue("F1", "Foto 5")
            ->setCellValue("G1", "Foto 6")
            ->setCellValue("H1", "Foto 7");

$objPHPExcel->getActiveSheet()->setTitle('Import Test Foto');

$toContinue = true;
$limit = 0;
$size = 100;

$pictures = QueryHandler::buildSelect("testtable", array("cod_comanda", "poze"), "Created", $limit, $size);

$index = 2;
$activeSheet = $objPHPExcel->getActiveSheet();
$columns = array("B", "C", "D", "E", "F", "G", "H");
foreach ($pictures as $picture) {
    $activeSheet->setCellValue("A".$index, $picture["cod_comanda"]);
    if (strlen($picture["poze"])) {
        $items = explode(",", $picture["poze"]);
        $itemCount = count($items);
        for ($innerIndex = 0; $innerIndex < $itemCount; $innerIndex++) {
            $activeSheet->setCellValue($columns[$innerIndex].$index, $items[$innerIndex]);
        }
    }
    $index++;
}

// Save Excel 2007 file

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("export/Import Test Foto.xlsx");

当前输出

Current output

期望的输出

Desired output

它输出的东西可以在第一张图片上看到。我希望能够像第二张图片中所示那样导出它,其中涉及Foto列靠近A列中的几行。请注意,当前代码只导出文本数据,而最后我需要导出图像,但我想我需要弄清楚如何首先修改细胞相对于第一列细胞的相对高度。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您知道图像的分辨率,那么您可以使用PHPExcel_Shared_Drawing类中的方法将像素转换为单元格尺寸(),反之亦然