从ASP.NET生成Word文档的最佳解决方案是什么?

时间:2013-04-13 15:50:58

标签: asp.net xml visual-studio-2010 ms-word report

我想从我的ASP.NET应用程序生成一个word文档。目前,我们展示了一个“议程清单”,它是议程信息和所有项目/主题。此页面需要具有单词打开的功能。议程页面不是静态的,它是从SQL Server中提取的议程项目的动态列表。

有关最佳解决方案的任何建议吗?我正在寻找一个快速的解决方案,OpenXML似乎有点太耗时。我愿意购买第三方工具。

谢谢!

6 个答案:

答案 0 :(得分:5)

使用Office OpenXML SDK。对于Office(2007及更高版本)的更高版本,这是标准。在其他答案中还有其他方法,但OpenXML将为您提供最大程度的输出控制。

以下是一些可以帮助您入门的文档: http://msdn.microsoft.com/en-us/office/bb265236.aspx

答案 1 :(得分:4)

你可以

  1. 让页面自己生成文档(如RTF格式)

  2. 将Word模板另存为XML并添加您自己的占位符,您可以在其中填写内容(我知道您说这很费时,如果您对模板进行了大量更新,这是真的)

  3. 使用Aspose(http://www.aspose.com)等第三方工具,它对我来说非常有效,因为它通过C#中的对象节省了大量时间来处理文档。

答案 2 :(得分:2)

我之前使用过三种方法:

  1. 使用openXML库从头开始以编程方式创建文档。
  2. 使用Office自动化将合并数据与Word模板一起邮寄。您将首先创建模板,然后使用DataSet填充数据字段。
  3. 如果您的数据库是SQL Server 2005或更高版本,则可以使用SSRS生成多种格式的文档,包括Word,PDF,Excel和CSV。

答案 3 :(得分:2)

您不需要任何第三方控件来创建Word文档。从2007年开始,Word可以将html作为word文档读取。您只需使用“ .doc ”扩展程序保存任何网页,Word就会对其进行排序。

只需使用您想要的任何格式创建您的网页,然后使用.doc扩展名保存。

我使用HttpWebRequest将Url(带有parmaters)调用到我的页面,然后使用WebResponseStream将我的页面放入缓冲区,然后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的开发人员。