【问题标题】:Add images to a excel file using PHP使用 PHP 将图像添加到 Excel 文件
【发布时间】:2013-01-23 04:06:15
【问题描述】:

我正在使用以下函数将内容添加到使用 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 作为值。

【问题讨论】:

    标签: php excel heroku export-to-excel


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      “Trigun”,你的建议真的很有帮助。我能够从https://github.com/PHPOffice/PHPExcel 下载最新的 PHPExcel 类,并且立即启动并运行。但是,花了一些额外的时间来弄清楚如何将图像添加到 excel 文件中。你的解释没有多大帮助。

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

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

      sites/all/libraries/phpexcel/Classes
      

      现在,您可以在网站的任何位置创建您希望的 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) 创建“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) 创建一个“绘图”对象,我们可以将图像加载到该对象中。请记住在您的网络服务器中将图片 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);
      

      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;
      

      这就是全部!

      【讨论】:

      • 加 1 以回复您的问题。
      【解决方案3】:

      一旦你安装了 PHPExcel。然后插入代码: 我在这里使用的图像是相对的。 路径:'./images/logo.jpg'

      $objDrawing = new PHPExcel_Worksheet_Drawing();
      $objDrawing->setPath('./images/logo.jpg');
      $objDrawing->setCoordinates('A1');
      $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多