C# 如何从SQL Server生成文档(docx或pdf)?

C# 如何从SQL Server生成文档(docx或pdf)?,c#,sql-server-2008,ssis,pdf-generation,ms-office,C#,Sql Server 2008,Ssis,Pdf Generation,Ms Office,我知道这有点主观,但我正在研究以下情况: 我需要从SQLServer数据库中的数据自动生成大量文档。数据库上将有一个MVC3应用程序sat,允许数据输入等,并且(可能)有一个“Go”按钮来生成文档 关于这些文档的创建、命名和存储方式,需要有一些业务逻辑(例如,“父”文档获得一个名称并进入一个文件夹,“子”文档获得一个计算名称并进入子文件夹 文档可以是PDF或Doc(x)(甚至两者都可以),只要输出可以是EN-US和AR-QA(RTL文本) 我知道SSRS、Crystal Reports、VSTO

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

我需要从SQLServer数据库中的数据自动生成大量文档。数据库上将有一个MVC3应用程序sat,允许数据输入等,并且(可能)有一个“Go”按钮来生成文档

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

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

我知道SSRS、Crystal Reports、VSTO、代码中的“手动”PDF、word邮件合并等都有很多选项,我们已经有了一个HTML到PDF的工具,如果有什么用的话

有人对如何进行这项工作以及“最佳”(最实用)的方法有什么实际建议吗?我需要在服务器上安装和配置的“附加”越少越好-开发越快越好(一如既往!!)


迄今为止的调查结果:

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

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

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

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

Office OpenXML是一种生成Office文件的好方法和简单方法。XSLT可以成为格式化内容的强大工具。这项技术不允许您创建pdf

不使用任何第三方组件的快速开发将是困难的。但是如果您确实考虑使用报表服务器,请务必检查BILT或蟑螂合唱团。< /P>


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

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

以下是一个简单订阅的示例:

只有当您对在服务器上设置SSR没有问题并且确实需要计划报告和复杂报告时,才可以选择SSR

如果你有手动生成PDF/docx的代码,我建议你继续。希望它的代码的复杂性对你来说不是问题

我在不同的场景中使用了这两种方法。我们使用了.NET中的excel类和对象,从web应用程序中获得了最少的报告


但对于一个需要按计划生成1000份报告并交付给选定人员的系统,我们选择了一个精心设计的报告方案。

谢谢-不需要计划,更多的是能够用“模板”中的数据替换存根SSRS也可以创建动态文件夹结构/文件名吗?是的,在常规订阅中,您可以在打印屏幕上创建动态文件名(请参阅覆盖选项)。如果您需要更详细的内容,例如动态文件夹,您需要数据驱动订阅它真的是SSRS中的一个吗(这就需要企业版)或只是一个按需报告?我认为您可以使用嵌入式RS客户端直接呈现到PDF或Word,或只是在您的网页中向用户呈现报告,并允许他们指导保存操作。对于单个报告,这将是非常好的,但是最终结果(在本例中)是一个多层次的报告层次结构。基本上,我们需要为我们的所有客户、他们的股东、董事会成员和子公司(包括他们的股东、董事会成员等)为监管机构生成具体的报告。有关于每个报告的级别等的规则。很好,您可以编辑原始帖子作为参考。你有没有检查过Silverlight和WPF等技术的功能?没有,没有超出上面的列表…基本上与我们已有的功能一致,但升级到了.Net 4.0版本。