php excel文件在线预览(走过的坑)
首先感谢以往分享相关问题的小伙伴,从中收货很多部分内容也是引用了前人的内容,希望对后来的人有帮助。
1.已经布好的服务如微软的Office365等平台服务
实例:http://technet.microsoft.com/zh-cn/library/jj219456(v=office.15).aspx 只需要将自己文件地址传进去即可
这种处理方式虽然方便,但是对于公司的数据资源的保护不利,并且这些在线转换服务是收费的,如果这方面无所谓的话推荐使用。
2.通过phpExcel扩展进行excel文件解析直接输出html
不推荐:
通过文件后缀名switch case 方式创建createReader读取,这种方式不能准确的判断文件类型导致经常会读取错误,这一点很重要。
当excel中有图片解析报错未解决如果有同学解决了这个问题希望能分享出来
set_time_limit(0);
require dirname(dirname(__FILE__)) . '../../common/comp/excel/PHPExcel.php'; //更改为你的phpexcel文件地址
$sFileUrl=>''// 你文件的地址
$sFileType = PHPExcel_IOFactory::identify($sFileUrl);//获取文件类型
$objReader = PHPExcel_IOFactory::createReader($sFileType);//创建读取
$objWriteHtml=new PHPExcel_Writer_HTML($objReader->load($sFileUrl, 'UTF-8'));//加载内容
echo $objWriteHtml->save("php://output");//输出html文件到页面
3通过openoffice进行文件解析转换->pdf->swf
首先安装oppenoffice服务并且后台启用服务,windows平台需要安装完openOffice后,在开始–运行中输入Dcomcnfg打开组件服务。在组件服务—计算机—我的电脑—DCOMP配置中,选择openoffice service manager右键属性->安全 全部添加组或用户名Everyone,属性->标识 选择交互式用户,linux系统配置自行查找一下相对windows要简单很多(此步骤解决报错)
执行命令:
soffice -headless-accept=“socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard
成功后即在后台运行了该软件。
如果是php5.4.5以前版本,需要在php.ini里把com.allow_dcom = true打开,即去掉前面的分号。如果是以后版本,需要在php.ini 里增加一行扩展extension=php_com_dotnet.dll,然后检查php的ext目录中是否存在该dll文件,如果没有请自行下载对应版本的dll。然后重启apache
下面是通过p