【问题标题】:How to produce documents (docx or pdf) from SQL Server?如何从 SQL Server 生成文档(docx 或 pdf)?
【发布时间】:2012-05-12 16:06:12
【问题描述】:

我知道这有点主观,但我正在调查以下情况:

我需要从 SQL Server 数据库中的数据自动生成一些文档。将有一个 MVC3 应用程序放在数据库上以允许数据输入等,并且(可能)一个“开始”按钮来生成文档。

需要有一些关于如何创建、命名和存储这些文档的业务逻辑(例如,“父”文档获取一个名称并进入一个文件夹,“子”文档获取一个计算名称并进入一个子文件夹.

文档可以是 PDF 或 Doc(x)(或两者兼有),只要输出可以是 EN-US 和 AR-QA(RTL 文本)

我知道 SSRS、Crystal Reports、VSTO、代码中的“手动”PDF、word 邮件合并等有很多选项......如果有任何用处,我们已经有了 HTML 到 PDF 工具?

对于如何实现这一点以及“最好的”(最务实的)方法是什么,是否有人有任何现实世界的建议?我需要在服务器上安装和配置的“额外”越少越好 - 开发越快越好(一如既往!!)


目前的调查结果:

Word 邮件合并(或 VSTO) 根本没有提供我需要的简单性、控制性和灵活性——真的很丢脸。最好定义一个 dotx 并能够单独将数据传递给它以生成 docx。我能做到这一点的唯一方法(我可能在这里错了)是按名称循环通过控件/书签并替换值......混乱。

OpenXML 基于 dotx 模板创建文档,即使使用 OpenXML 也不像(恕我直言)应该的那么简单。您必须按名称替换每个内容控件,因此维护不是最简单的任务。

SSRS 从表面上看,这是一个很好的解决方案(尽管它需要 SQL Enterprise),但是如果您想动态生成文件夹和文档,它会变得更加复杂。数据驱动的订阅非常接近我想要的。

Winnovative HTML 到 PDF 转换器* 这是我们已经拥有的工具(尽管是 .Net 2.0 版本)。这使我可以生成 HTML 页面并将其转换为 PDF。对我来说是一个不错的选择,因为我可以在 MVC3 网站上运行它并将参数传递给控制器​​以生成 PDF。这让我可以更精细地控制文件夹和命名结构——这种方法的问题只是以正确的方式生成页面。一个好处是它会自动给我一个“预览”...基本上只是 HTML 页面!

【问题讨论】:

  • 它真的是 SSRS 中的 Data-Driven subscription(需要企业版)还是只是按需报告?我认为您可以使用嵌入式 RS 客户端直接呈现为 PDF 或 Word,或者只是在您的网页中向用户展示报告并允许他们指导保存操作。
  • 对于单个报告,这会很好,但最终结果(在这种情况下)是多级报告的层次结构。基本上,我们需要为我们的所有客户、他们的股东、董事会成员和子公司——包括他们的股东、董事会成员等,为监管机构制作具体的报告。有关于每个报告的级别等的规则。
  • 很高兴您编辑原始帖子作为参考。您是否碰巧查看过 Silverlight 和 WPF 等技术的功能?
  • 不,没有超出上面的列表……基本上和我们已有的一样,但升级到了.Net 4.0版本。

标签: c# sql-server-2008 ssis pdf-generation ms-office


【解决方案1】:

Office OpenXML 是一种生成办公文件的简便方法。 XSLT 可以成为格式化内容的强大工具。这项技术不会让您创建 pdf。

不使用任何第三方组件的快速开发将很困难。但如果您确实考虑使用报表服务器,请务必查看 BIRT 或 Jasper。

为了生成 pdf,我一直在使用已弃用的 Report.net。它有许多不同语言的端口,仍然足以制作简单的 pdf。 Report.net on sourceforge

【讨论】:

    【解决方案2】:

    我不认为 SQL Server 本身可以生成 pdf 文件。正如您所提到的,您可以做的是安装一个 SSRS 实例并创建一个生成您需要的信息的报告。然后,您可以创建订阅,以便随时随地将您的报告发送到您想要的地方。

    这是一个简单订阅的示例:

    【讨论】:

    • SSRS 也可以创建动态文件夹结构/文件名吗?
    • 是的,在定期订阅中,您可以在打印屏幕上创建动态文件名(请参阅覆盖选项)。如果您需要更精细的内容,例如动态文件夹,则需要数据驱动订阅
    【解决方案3】:

    仅当您可以在服务器上设置它并且确实需要计划报告和复杂报告时才选择 SSRS。

    如果您有手动生成 PDF/docx 的代码,我建议您继续使用它。希望其代码的复杂性与您无关。

    我在不同的场景中都使用过。我们使用 .NET 中的 excel 类和对象从 Web 应用程序中生成最少的报告。

    但是为一个需要以预定方式生成 1000 份报告并交付给选定的一组人的系统制定了一个精心设计的报告方案。

    【讨论】:

    • 谢谢 - 不需要调度,更多的是能够用某种“模板”中的数据替换存根,然后保存到特定的位置/名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2014-09-09
    • 2016-01-10
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多