【问题标题】:Converting excel to pdf using PHP使用PHP将excel转换为pdf
【发布时间】:2017-01-13 00:34:30
【问题描述】:

我正在使用 PHPExcel 创建一个 excel 文件!我需要将其保存为 .xlsx 文件并拥有一个 .pdf 文件

使用 PHPExcel,我的 pdf 以一种奇怪的格式出现,如下所示: Result

但我想要这样的东西(这是手动生成的,“另存为 pdf”): What I Want

你知道将excel转为pdf的简单方法吗?

$objReader = \PHPExcel_IOFactory::createReader("Excel2007");
$objPHPExcel = $objReader->load(Some_Path);
$objPHPExcel->setActiveSheetIndex(0);        


$objPHPExcel->getActiveSheet()
        ->setCellValue('B8', "testing");


//Write Excel 
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('testing.xlsx');

// Write PDF
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('testing.pdf');

【问题讨论】:

  • 可以给我们一些代码吗 :)
  • 是的!对不起@MaximeK :)
  • 您使用的是哪个 PDF 渲染引擎?您为网格线启用了哪些设置? setShowGridlines() 应该为工作表设置为 false
  • 你可能还需要做一些单元格合并,或者设置一些列宽
  • 你用的是电脑吗?如果是这样,PHP 可以为 Excel 对象库创建一个 COM 接口,并使用其原生的ExportAsFixedFormat 方法

标签: php excel pdf laravel-5 phpexcel


【解决方案1】:

如果在 Windows PC 上使用 PHP,请考虑将 COM interface 添加到 Excel 对象库。这是一个仅限 Windows 的扩展,通常随 PC 上的 PHP 安装一起提供。

这种方法几乎可以让您执行 Excel VBA 可以执行的任何操作,包括调用 ExportAsFixedFormat 方法来输出 PDF 文件。请注意,此方法可以在 WorkbookWorksheet 对象上运行(遵守预设/默认打印页面设置),甚至是 ChartRange

// EXCEL APP OBJECT
$xlapp =  new COM("Excel.Application") or Die ("Did not instantiate Excel");

// WORKBOOK AND WORKSHEET OBJECTS
$wbk = $xlapp->Workbooks->Open("C:\\Path\\To\\Workbook.xlsx");    
$wks = $wbk->Worksheets(1);

// SET CELL VALUE
$wks->Range("B8")->Value = "testing";

// OUTPUT WORKSHEET TO PDF
$xlTypePDF = 0;
$xlQualityStandard = 0;

try {
    $wks->ExportAsFixedFormat($xlTypePDF, "C:\\Path\\To\\Output.pdf", $xlQualityStandard);

} catch(com_exception $e) {  
    echo $e->getMessage()."\n";
    exit;

}

// OPEN WORKBOOK TO SCREEN
$xlapp->Visible = true;

// END PROCESS / FREE RESOURCES
$xlapp = NULL;
unset($xlapp);

【讨论】:

  • 我可以在Linux服务器上模拟这个COM接口吗?
  • 不幸的是,COM 是一种 Windows 技术。您可能需要在 Excel 工作簿中编写一个宏,并让 PHP 通过 exec 调用它。
  • 有什么方法可以更改 pdf 设置,例如,当我转换为 pdf 时,我在 excel 中有两个图表,两个图表都排成一行,并且由于空间第二个图表分为两页
猜你喜欢
  • 1970-01-01
  • 2011-05-26
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2016-07-16
  • 2018-02-03
  • 1970-01-01
相关资源
最近更新 更多