我想从我的ASP.NET应用程序生成一个word文档。目前,我们展示了一个“议程清单”,它是议程信息和所有项目/主题。此页面需要具有单词打开的功能。议程页面不是静态的,它是从SQL Server中提取的议程项目的动态列表。
有关最佳解决方案的任何建议吗?我正在寻找一个快速的解决方案,OpenXML似乎有点太耗时。我愿意购买第三方工具。
谢谢!
答案 0 :(得分:5)
使用Office OpenXML SDK。对于Office(2007及更高版本)的更高版本,这是标准。在其他答案中还有其他方法,但OpenXML将为您提供最大程度的输出控制。
以下是一些可以帮助您入门的文档: http://msdn.microsoft.com/en-us/office/bb265236.aspx
答案 1 :(得分:4)
你可以
让页面自己生成文档(如RTF格式)
将Word模板另存为XML并添加您自己的占位符,您可以在其中填写内容(我知道您说这很费时,如果您对模板进行了大量更新,这是真的)
使用Aspose(http://www.aspose.com)等第三方工具,它对我来说非常有效,因为它通过C#中的对象节省了大量时间来处理文档。
答案 2 :(得分:2)
我之前使用过三种方法:
答案 3 :(得分:2)
您不需要任何第三方控件来创建Word文档。从2007年开始,Word可以将html作为word文档读取。您只需使用“ .doc ”扩展程序保存任何网页,Word就会对其进行排序。
只需使用您想要的任何格式创建您的网页,然后使用.doc扩展名保存。
我使用HttpWebRequest
将Url(带有parmaters)调用到我的页面,然后使用WebResponse
和Stream
将我的页面放入缓冲区,然后StreamReader
和{ {1}}将其保存到实际文档中。我已经有了自己的自定义功能来下载文件。
如果有人想要我的代码,请告诉我
答案 4 :(得分:1)
您也可以尝试我们的第三方GemBox.Document库。
以下是一个示例C#代码,如何以编程方式生成模板Word(DOCX)文档,并使用 mail merge 将数据导入其中:
var document = new DocumentModel();
document.Sections.Add(
new Section(document,
new Paragraph(document, "Agenda List:"),
new Paragraph(document,
new Field(document, FieldType.MergeField, "RangeStart:Agendas"),
new Field(document, FieldType.MergeField, "Subject") { CharacterFormat = { Bold = true } },
new SpecialCharacter(document, SpecialCharacterType.LineBreak),
new SpecialCharacter(document, SpecialCharacterType.Tab),
new Field(document, FieldType.MergeField, "Description")),
new Paragraph(document,
new Field(document, FieldType.MergeField, "RangeEnd:Agendas"))));
var agendas = new object[]
{
new { Subject = "First agenda subject", Description = "First agenda description." },
new { Subject = "Second agenda subject", Description = "Second agenda description." }
};
document.MailMerge.Execute(agendas, "Agendas");
document.Save("Agendas.docx");
您还可以轻松save Word document to ASP.NET回复流。
答案 5 :(得分:0)
我建议您尝试我们的Elerium Word .Net Writer组件从ASP.NET页面生成Word文档。有一个带有sourse代码的演示,演示了如何使用dinamic datatable创建新的Word文档:
http://eleriumsoft.com/Word_NET/WordWriter/Demo.aspx
免责声明:我是Elerium Software的开发人员。