PHP将Excel另存为Word

//这里引入PHPExcel类
$filePath = ‘Excel文件.xls‘;
$fileType = PHPExcel_IOFactory::identify($filePath); //文件名自动判断文件类型
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($filePath);

$savePath = ‘文件保存路径/文件名.doc‘; //这里直接改为word后缀即可
$objWriter = new PHPExcel_Writer_HTML($objPHPExcel); 

//注意这里,比上篇文章多了这行代码
$objWriter->setUseInlineCss(true); //采用内联样式

$objWriter->setSheetIndex(0);
$objWriter->save($savePath);

真心感觉这就像是连续剧,刚搞完另存为html,又搞了一个另存为word。

下面说原理:
其实原理不难,经过测试,fwrite写入html代码时,只要将css样式以内联样式写入,最后另存为的word即可显示对应的样式内容(关于内联、外联、嵌入样式的定义,请自行好搜)。比如html代码这么写:

<div style=‘color:red;font-weight:bold;‘></div>

那么在生成的word中即可看到红色加粗的文字。但,如果div只是写成 class=‘className‘ 的形式,word则不会解析。

基于此思路,即将原本写在head中的css样式直接追加到Table内部,学名叫做 嵌入式样式表(内部样式表) 改为 内联样式,即可实现在保留样式的前提下另存为word。
我最初的方法是将PHPExcel自带的HTML类拷贝了一份,修改后作为Word类使用,但在修改过程中,发现了 setUseInlineCss 方法,从方法名就可以看出,这是设置是否采用内联样式的,悲催的是,当时我已经改了快一半...才发现,原来追加这一行代码即可,由此可见,通读代码是多么的重要,还好原作者的代码写的非常棒,要不然只能头疼着去读了...严重怀疑原作者当时也是为了保存为word,所以特意加了这么一个功能...(⊙﹏⊙)b

不过,还另有收获,源代码中针对PDF另存为html时,还增加了 Tab 标签功能,即会对多个sheet生成navigation...算是个彩蛋吧,留着以后也许会用到。

时间: 2024-10-05 21:35:06

PHP将Excel另存为Word的相关文章

VSTO:使用C#开发Excel、Word【12】

Excel对象模型中的事件了解excel对象模型中的事件至关重要,因为这通常是代码运行的主要方式.本章将检查Excel对象模型中的所有事件,引发事件以及可能与这些事件关联的代码类型. Excel对象模型中的许多事件在应用程序,工作簿和工作表对象上重复.此重复允许您决定是否要处理所有工作簿,特定工作簿或特定工作表的事件.例如,如果您想知道任何打开的工作簿中的任何工作表是否双击,您将处理Application对象的SheetBeforeDoubleClick事件.如果您想知道在特定工作簿中的任何工作

Windows7与Window2008 64位IIS7上面DCOM配置Excel、Word等

解决办法:1.(适用于.NET) 1).通过webconfig中增加模拟,加入管理员权限, <identity impersonate="true" userName="系统管理员" password="系统管理员密码"/> 2).这样就能够启动Application进程,操作EXCEL了,能够新建EXCEL,导出EXCEL,但是还是不能打开服务器端的EXCEL文件 2.(以下适用于所有语言)  在组件服务,DOCM设置 Micros

VSTO:使用C#开发Excel、Word【9】

文件背后的代码VSTO支持文档背后的代码,要求开发人员使用VSTO项目中生成的具有预连接上下文和预连接事件的类.这些类有时被称为"代码后面"类,因为它们是与特定文档或工作表相关联的代码.在Word中,与文档对应的类后面有一个代码.在Excel中,工作簿中的classone有多个代码,工作簿中的每个工作表或图表工作表都有一个代码. 您的代码在文档项目后面的VSTO代码中第一次运行时,当Office引发由为您创建的类后面的任何代码处理的Startup事件. VSTO通过您正在编写代码的类的

VSTO:使用C#开发Excel、Word【8】

office加载项Office开发中使用的第二种模式是加载项模式.本书涵盖了几种Office加载项.其中包括Outlook的VSTO加载项,Excel和Word的COM加载项以及Excel的自动化加载项: 用于Outlook的VSTO加载项这个新的VSTO功能使得为Outlook 2003创建加载项变得非常容易.该模型是所有加载项模型中最体现".NET"特色的,并且与模型后面的VSTO代码非常相似文件.第24章"使用VSTO创建Outlook加载项"详细描述了该模型

VSTO:使用C#开发Excel、Word【1】

<Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath >--By Eric Carter, Eric Lippert 概观"随着应用开发社区如此专注于智能客户端革命,一本涵盖从A到Z的VSTO的书是重要和必要的,这本书有很大的期望,它是彻底的,有大量的示例代码,涵盖了Office编程一般术语可以是多年来专注于ASP.NET应用程序的经验丰富的.NET开发人员的外部话题.感谢

VSTO:使用C#开发Excel、Word【3】

前言在2002年,Visual Studio .NET和.NET Framework的第一个版本即将完成.我们中的几个意识到微软的.NET将会错过Office,除非我们做了一些事情. 以前曾经是Visual Basic for Applications(VBA),这是一个集成到所有Office应用程序中的简单开发环境.每个Office应用程序都有一个丰富的对象模型,通过一种称为COM的技术访问.数以百万计的开发人员将自己定义为"Office开发人员",并使用VBA和Office COM

VSTO:使用C#开发Excel、Word【5】

第一部分:VSTO介绍本书的第一部分介绍了Office对象模型和Office主互操作程序集(PIA).您还将学习如何使用Visual Studio使用Visual Studio 2005 Tools for Office(VSTO)的功能来构建文档后面的自动化可执行文件,加载项和代码. 第一章"办公编程介绍"介绍了Office对象模型,并对其基本结构进行了研究.本章介绍如何使用对象,集合和枚举所有Office对象模型中找到的基本类型.您还将学习如何使用Office对象模型中的对象和集合

Office(Excel、Word)二次开发&mdash;&mdash;VSTO

Office(Excel.Word)二次开发--VSTO Office(Excel.Word)二次开发--VSTO Office二次开发模式: 1) VBA(visual studio for application),功能有限,语言落后. 2) .net2003中的对象模型(com组件,excelobject 11 library)功能强大,需手动操作. 3) vs.net2005中的vsto(visual studiotool for office)    VSTO方便快捷功能强大. 2).

Java中用Apache POI生成excel和word文档

概述: 最近在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能,最后决定用Apache POI来完成该项功能.本文就项目实现过程中的一些思路与代码与大家共享,同时,也作为自己的一个总结,以备后用. 功能: 1.从数据库查询数据导出为excel: 2.导出word的包括,内容有文字,图片,表格等. 效果: 导出excel 导出word 实现代码: 1.导出excel package beans.excel; import java.io.FileOutputStream;