从 SQL Server 创建到 MS Word 的报告

本文关键字:Word 报告 MS SQL Server 创建 | 更新日期: 2023-09-27 18:37:10

我想创建一个数据库表到word文档的报告。我知道,可以使用命名空间Microsoft.Office.Interop.Word;

现在,我可以使用以下代码使用简单的字符串创建word文档:

using Word = Microsoft.Office.Interop.Word;
private void MakeReport()
{
    object fileName = Application.StartupPath + "''DataBase_Report.docx";
    Word.Application WordApplication = new Word.Application();
    WordApplication.Visible = true;
    Word.Document WordDocument = WordApplication.Documents.Open(fileName);
    WordDocument.Variables["DataBase"].Value = "Hello";
    WordDocument.Fields.Update();
    WordDocument.Save();
}

有谁知道,如何出表到这个文档?

从 SQL Server 创建到 MS Word 的报告

不久前我遇到了一个非常古老的技巧,它可能无法满足您的所有要求,但我认为值得一提。

可以向任何 aspx 页添加两个标头,这将导致浏览器下载该页而不是呈现该页。您可以像往常一样设计页面,然后添加这两个标题

Response.AddHeader("content-type", "application/vnd.ms-word")
Response.AddHeader("content-disposition", "attachment; filename=" & "SomeFileName.doc")

b.t.w如果您需要Excel,可以像这样更改它们

Response.AddHeader("content-type", "application/vnd.ms-excel")
Response.AddHeader("content-disposition", "attachment; filename=" & "SomeFileName.xls")

我能想到的限制是

  • 它实际上不是一个word文档。这是一个带有.doc的 HTML 文档外延
  • 不支持相对路径
  • 您可能会在客户端上收到一些警告,指出文件类型与文档的内容不匹配
  • 不支持.docx和.xlsx。只有.doc和.xls

我可以忍受,这是我所知道的在没有任何第三方工具的情况下生成办公文档的最简单方法。

根据Microsoft的知识库257757,如果要在服务器环境中运行应用程序,则不建议使用互操作。

我正在使用Docentric Toolkit进行Word文档生成,这是一个基于OpenXML的工具,因此无需在服务器上安装Word。该工具附带一个MS Word加载项,您可以使用它准备带有数据占位符的模板。

在您的应用程序中,您必须:

    将数据
  1. 从数据库读取到数据模型类集合中(例如,使用实体框架和 linq)
  2. 调用该方法以从所选模板生成 Word 文档,该模板填充了上一步数据收集中的数据。

你可以看看 CodeProject 中的一个示例。