关于用html语言生成word格式文档的视图问题

来源:互联网 发布:ubuntu samba 配置 编辑:程序博客网 时间:2024/06/11 19:49

接到一个需求,要生成word格式的说明文档,并且要和本地的office版本无关。一开始还是考虑用com组件编程,想写一个工厂,用来判断当前系统的office版本,以实现兼容,但浅尝辄止。主要是在命名空间这块的问题还没有想好如何解决。

于是换了思路,直接生成html格式的数据到文本文件,并为其重命名为.doc word文件,实现过程比较容易,但实现以后领导提出了几点要求:

1.表格宽度在word中变形

2.打开word文件时默认是“Web版式视图”,这样会给客户的感觉不是真正的word文档,必须实现打开就是“页面视图”

第一个问题很好解决,表格的宽度不再使用px,而改为百分比即可解决。

关于第二个问题,参考相关demo并试验后,发现在html代码中加入以下代码即可实现:

首先html标签中要加入模板:

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">

其次要在<head></head>之间加入以下文本

<!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:TrackMoves>false</w:TrackMoves><w:TrackFormatting/><w:ValidateAgainstSchemas/><w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><w:IgnoreMixedContent>false</w:IgnoreMixedContent><w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><w:DoNotPromoteQF/><w:LidThemeOther>EN-US</w:LidThemeOther><w:LidThemeAsian>ZH-CN</w:LidThemeAsian><w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><w:Compatibility><w:BreakWrappedTables/><w:SnapToGridInCell/><w:WrapTextWithPunct/><w:UseAsianBreakRules/><w:DontGrowAutofit/><w:SplitPgBreakAndParaMark/><w:DontVertAlignCellWithSp/><w:DontBreakConstrainedForcedTables/><w:DontVertAlignInTxbx/><w:Word11KerningPairs/><w:CachedColBalance/><w:UseFELayout/></w:Compatibility><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><m:mathPr><m:mathFont m:val="Cambria Math"/><m:brkBin m:val="before"/><m:brkBinSub m:val="--"/><m:smallFrac m:val="off"/><m:dispDef/><m:lMargin m:val="0"/> <m:rMargin m:val="0"/><m:defJc m:val="centerGroup"/><m:wrapIndent m:val="1440"/><m:intLim m:val="subSup"/><m:naryLim m:val="undOvr"/></m:mathPr></w:WordDocument></xml><![endif]-->

之后将文件的后缀名 改为".doc",打开后默认的视图即为页面视图。网上相关资料较少,记录于此,以备日后查阅。

ps:word 中的字体大小在html中对应的是:二号 29px;小五:12px;