我有一个项目,希望生成一个MS Word格式的报告导出。该报告将包括图片/图表、表格和文本。最好的方法是什么?需要使用第三方工具吗?你有什么经验?
请查看VSTO(Visual Studio Tools for Office)。 创建Word模板,注入xml数据岛并将其发送到客户端非常简单。 当用户在Word中打开文档时,Word会读取xml并将其转换为WordML并呈现它。 您需要查看VSTO库的ServerDocument类。 根据我的经验,不需要额外的许可证。
我目前正在做这个。如果文档不是很大,不包含图片等内容,那么我会将其存储为带有#MergeFields#的RTF,并简单地用内容替换它们,将结果作为RTF发送给用户。
对于较大的文档,包括图像和动态插入的图像,我将初始Word文档保存为一个包含#MergeFields#的Single Webpage *.mht文件。然后我像上面那样做。使用这种方法,我可以轻松地呈现带有一些基本Html表格标记的DataTable,并将其中一个#MergeFields#替换为整个表格。
图像也可以存储在您的服务器上,并将URL嵌入到文档中。
有趣的是,新的Office 2007文件格式实际上是zip文件——如果您将扩展名改为.zip,您可以打开它们并查看其内容。这意味着您应该能够使用简单的C# zip库切换内容,如图像。
@Dale Ragan:这对于Office 2003 XML格式是有效的,但它不是可移植的(例如,.doc或.docx文件)。
要读/写这些文件,您需要使用Word对象库ActiveX控件:
@Danny Smurf: 实际上,这篇文章描述了即将成为Office Open XML格式的内容,Rob已经回答了这个问题。我现在会更加注意我发布的链接,以确保它们不过时。当时我实际上是搜索了WordML。
我相信Office Open XML格式是最好的选择。