有时需要将数据导出为word格式,常规做法是用com组件或者ole服务,这都要求客户端安装有office。 或者使用第三方组件来生成word文档,还有就是xml格式使用freemarker之类的工具也行。 但这些方法都工作量不小。如果需求只是简单的将文字,表格等内容转为word,还有一个投机取巧的方法可用。 严格意义上这不是正统的word文档。而是利用word兼容html的特性生成html文档然后加上特定标记而成。 Talk is cheap. Show me the code. 代码如下: str1:= Tstringlist.Create; str1.Add('<html xmlns:v="urn:schemas-microsoft-com:vml"'); str1.Add('xmlns:o="urn:schemas-microsoft-com:office:office"'); str1.Add('xmlns:w="urn:schemas-microsoft-com:office:word"'); str1.Add('xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"'); str1.Add('xmlns="http://www.w3.org/TR/REC-html40">'); for I := 0 to memo1.Lines.Count-1 do str1.Add(memo1.Lines.Strings[i]+'<br>'); str1.Add('</html>'); str1.SaveToFile(filename); str1.Free; 此代码把memo里面的文本保存为doc格式。用wps打开正常。 html下的字体,颜色,大小,表格等这些应该都没问题。但图片能否保存在文件内没仔细测试过。 <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA……"alt=""> 用这个能在html文件内显示内嵌的图片,但放到doc里,在wps下打开能显示图片框但没图片。手头没装office,word下没测试。 |
东风夜放花千树 浙ICP备19024182号-2 浙公网安备 33078202001030号
GMT+8, 2024-12-9 14:38 , Processed in 0.099220 second(s), 15 queries .
Powered X3.4
© 2001-2017