接到需求 程序需定时把某个excel 请求转成png 然后发送到企业微信
发送到企业微信,有接口调试一下就行,自然不必说 简单的很
这里说说 吧excel 转成 png的部分
思路1 phpexcel转pdf pdf在到png 在excel转pdf的过程中 发现表格样式改变 以及 中文识别乱码的问题 坑巨大 直接放弃
思路2 (也是我采取的) PHPexcel将excel 文件 显示在 html上 然后 使用phantomjs 进行网页抓取生成 png
有2个问题
1phantomjs 的中文乱码问题 需要
在centos中执行:yum install bitmap-fonts bitmap-fonts-cjk
2 excel的图片处理问题 另存到本地的服务器
<?php
require_once '/data/phpexcel/PHPExcel/Classes/PHPExcel.php';
date_default_timezone_set('PRC');
$source_file = '/data//aaa.xlsx';
$imgPath = '/data/'.date('Ymd').'/'.date('H')."/";
if(!file_exists($imgPath))
{
mkdir($imgPath);
}
ini_set("display_errors",1);
define('EXCEL_EXTENSION_2003', "xls");
define('EXCEL_EXTENSION_2007', "xlsx");
$fileName2003 = "Standard_Format_File1.xls";
$fileName2007 = '/data/aaa.xlsx';
$fileName = $fileName2007;
//$fileName = $fileName2007;
if(getExtendFileName($fileName) == EXCEL_EXTENSION_2003)
{
$reader = PHPExcel_IOFactory::createReader('Excel5');
}
else if(getExtendFileName($fileName) == EXCEL_EXTENSION_2007)
{
$reader = new PHPExcel_Reader_Excel2007();
}
$PHPExcel = $reader->load($fileName);
$worksheet = $PHPExcel->getActiveSheet();
$imageInfo = extractImageFromWorksheet($worksheet,$imgPath);
var_dump($imageInfo);
function getExtendFileName($file_name) {
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}
function extractImageFromWorksheet($worksheet,$basePath){
$result = array();
$imageFileName = "";
foreach ($worksheet->getDrawingCollection() as $drawing) {
$xy=$drawing->getCoordinates();
$path = $basePath;
// for xlsx
if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
$filename = $drawing->getPath();
$imageFileName = $drawing->getIndexedFilename();
$path = $path . $drawing->getIndexedFilename();
copy($filename, $path);
$result[$xy] = $path;
// for xls
} else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
$image = $drawing->getImageResource();
$renderingFunction = $drawing->getRenderingFunction();
switch ($renderingFunction) {
case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
$imageFileName = $drawing->getIndexedFilename();
$path = $path . $drawing->getIndexedFilename();
imagejpeg($image, $path);
break;
case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
$imageFileName = $drawing->getIndexedFilename();
$path = $path . $drawing->getIndexedFilename();
imagegif($image, $path);
break;
case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
$imageFileName = $drawing->getIndexedFilename();
$path = $path . $drawing->getIndexedFilename();
imagegif($image, $path);
break;
case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
$imageFileName = $drawing->getIndexedFilename();
$path = $path . $drawing->getIndexedFilename();
imagegif($image, $path);
break;
}
$result[$xy] = $imageFileName;
}
}
return $result;
}