目录

介绍

文档生成方法1——VBA

文档生成方法2——报告包

文档生成方法3——文档生成软件

操作中的文档生成软件

第1步:将表数据导出为XML或JSON

第2步:将XML / JSON填充到文档模板中

结论


将SQL Server数据自动填充到Word和PDF文档模板中,用于合同、发票、信函等创建,为企业节省了数千小时。本文探讨了各种方法,并就如何根据您的要求选择最佳方法提供了一些建议。

介绍

SQL Server正在帮助企业在OLTP(在线事务处理),数据仓库,商业智能和分析中使用高性能的内存安全技术构建关键任务应用程序。一些大型ERP和CRM由SQL Server提供支持。

文件是各种规模组织的普遍真理。提案、合同、发票、合规文件都是业务运营的一部分。企业为每种文档类型使用经过批准的文档模板。然而,SQL Server数据库保存了用于文档生成的这些文档模板中的所有数据。

将数据重新键入模板会浪费时间和资源。因此,企业希望自动化文档创建。理想的解决方案是将SQL Server数据填充到Word / PDF文档模板中,以便批量/按需创建文档。聪明地选择正确的方法可以为您节省数千美元。

文档生成方法1——VBA

一种流行的方法是使用VBA或VSTO用数据库数据填充动态字段。开发人员为每个动态字段编写代码,并使用从SQL查询中检索的数据填充它们。文档模板经常更改,以符合外部和内部标准。每次都有模板更改,必须进行相应的代码更改,使其成为维护的噩梦。

VBA还用于创建恶意软件和病毒。因此,许多组织对VBA代码的使用都有严格的政策。此外,VBA编码模板与Office套件的不同版本不兼容,因此将其实用性限制在组织之外。每次升级Office版本时,模板都可能需要修改。

文档生成方法2——报告包

另一种流行的方法是使用SSRS等报告包,从SQL Server数据创建文档。您必须将文档作为默认报告导入到每个已安装的实例中,从而使其不那么优雅。此外,报告包缺乏丰富的文档设计功能,最适合仅创建交互式报告。因此,如果您有复杂的发票或合同模板,这种方法可能没什么用处。

我不打算讨论T-SQL存储过程,因为它们不是商业用户的DIY解决方案,需要开发资源。即使使用报告包,两种方法也不能完全赋予业务用户权力。因此,需要一个业务用户友好的SQL为PDF和Word文档创建解决方案,文档生成软件是完美的解决方案。

文档生成方法3——文档生成软件

使用文档生成软件,业务用户可以在编辑器中使用现有的Microsoft Word和PDF模板进行合同、报告、信函等,并使用SQL Server数据库数据填充它们。他们可以在他们喜欢的Word / PDF编辑器中编辑它们以进行模板更改。

除了Web应用程序,大多数文档生成软件还提供REST API。通过与API集成:

  • 文档生成可以自动化(按需文档生成),无需用户交互
  • 直接从数据库创建数千个文档(批量文档生成)

文档生成软件的另一个显着特征是您可以使用PDF和Word模板并生成PDF或Word文档。让我们来看看如何采用这种方法。

操作中的文档生成软件

从SQL Server生成文档包含两个步骤:

  1. 以XML / JSON格式导出SQL Server数据
  2. 将XML / JSON填充到文档模板中

第1步:将表数据导出为XML或JSON

在查询中带有在“FOR XML”子句的SELECT语句以XML的形式检索表数据。通过FOR XML子句,您可以通过参数显式指定XML输出的结构——RAW,AUTO或者EXPLICIT,或者让SELECT语句的结构确定输出。下面是从Person表中检索所有记录的AUTO参数的简单示例。

SELECT Title,FirstName,MiddleName,LastName,Suffix
FROM Person.Person
FOR XML AUTO 

同样,通过向SELECT语句添加“FOR JSON”子句,将数据从SQL Server导出为JSON 。通过FOR JSON子句,您可以通过参数明确指定JSON输出的结构——RAW,AUTO或者EXPLICIT,或者让SELECT语句的结构确定输出。

在SQL Server 2016 + s中,您可以将JSON文档存储在SQL Server中,并像在NoSQL数据库中一样查询JSON数据。但是,EDocGen接受任何JSON格式,不需要进行数据转换。

下面是AUTO参数的简单示例,该参数从Emp表中检索所有记录。

SELECT name, surname
FROM emp
FOR JSON AUTO

JSON结果。

[{"name": "John"
}, {"name": "Jane","surname": "Doe"
}]

现在准备好我们的XML / JSON文件,下一步是将XML / JSON填充到文档模板中。

第2步:将XML / JSON填充到文档模板中

文档生成软件,如EDocGen支持从XML / JSON数据到Word和PDF文档模板的动态文本,表格,段落,超链接和图像等的填充。

  • 在为动态字段添加相关标签后上载现有模板
  • 您不必进行任何数据转换,也可以按原样填充数据。在单击“生成”按钮之前,上载XML / JSON文件并将动态字段映射到数据字段。
  • 电子邮件,电子签名或同步云存储生成的文档

如上所述,您可以使用API​​自动创建文档,而无需人工干预。通过与API集成,您可以扩展文档分发渠道。

结论

总之,SQL Server中文档自动化的最佳方法取决于您的需求。如果您的模板没有经过更改并且只能在内部使用,那么VBA可能是一个不错的选择。如果您的模板很简单,SSRS也是一个不错的选择。如果您正在寻求灵活性并希望为业务用户提供支持,那么文档生成软件是最合适的。

原文地址:https://www.codeproject.com/Articles/1272776/Generate-Documents-from-SQL-Server

从SQL Server生成文档相关推荐

  1. oracle导出pdm文件命令,利用PowerDesigner逆向工程导出PDM模型及生成文档

    最近需要对老项目进行重构优化,由于项目都是好几年前的,相关设计资料很不全,最基本的数据库设计文档都没有,只能利用PowerDesigner逆向工程导出PDM模型及生成word文档:以下简单介绍导出模型 ...

  2. java接口废弃注释_Spring Boot如何让Web API自动生成文档,并解决swagger-annotations的API注解description属性废弃的问题...

    前后端分离的系统架构中,前端开发人员需要查看后端WEB API的文档来进行开发.采用后端API文档自动生成的方式,可以大幅提高开发效率.swagger是一个被广泛使用的文档自动生成工具,可以与多种编程 ...

  3. docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档

    为什么用 TypeScript? TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any ...

  4. showdoc如何创建文件夹_showDoc生成文档

    1. 创建项目 2. 获取api_key和api_token 1. 打开设置 2. 获取api_key和token 3. 生成文档 1. 先cd进入你的项目目录,命令行模式下输入: wget http ...

  5. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客

    原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 [csharp] view plain copy print? using System; using System ...

  6. showdoc安装与脚本生成文档

    前言 showdoc官方提供了一种自动化生成接口和文档的方案.在代码里编写特定格式的程序注释,然后程序就可以通过读取这些注释来自动生成文档.由于这种方式不跟特定的语言耦合,因此它的使用范围相当广泛,可 ...

  7. docsify - 生成文档网站简单使用教程

    1. docsify介绍 docsify 是一个动态生成文档网站的工具.不同于 GitBook.Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行. 这将非常 ...

  8. 使用Pydoc生成文档

    Python中本身带有很多实用的工具,如pydoc.pydoc模块主要用来从Python模块中提取信息并生成文档. 使用方法 在Windows和Linux下的使用方法有些区别. Windows pyt ...

  9. Objective-C自动生成文档工具:appledoc

    作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...

最新文章

  1. 安装 ssh 的公开密匙到 iPhone 上
  2. webToImage (网页转图片)模块试用分享
  3. 从零开始搭建系统1.1——CentOs安装
  4. 02--MySQL自学教程:数据库MySQL纯净卸载
  5. c语言中判断输入是否为数字_C 判断
  6. java 栈和队列实现迷宫代码_Python 实现数据结构中的的栈,队列
  7. vue.js java php_准吗?Java程序员喜欢AngularJS,PHP程序员喜欢Vue.js!
  8. 内存不足 java.lang.OutOfMemoryError: Java heap space
  9. MySQL 58到家数据库30条军规解读
  10. c#遍历匹配串口(向每个串口发数据,根据返回数据确定是否为所需串口)
  11. ATV320、ATV32变频器报tnF如何处理?
  12. addClass()使用方法
  13. 手机号核验复开是什么意思?可能你涉及到这些行为了!
  14. 带来计算机领域的先进,美国普渡大学David Yau教授到深圳先进院交流
  15. js 验证身份证号,根据身份证获取出生年月/性别
  16. Java内存区域和GC机制
  17. Selenium自动化测试入门(基于Python)
  18. win10安装PS和AI后报代码为16的错误解决方法
  19. Excel宏(VBA)类模块的创建与调用
  20. Java-List集合元素筛选

热门文章

  1. EMC测试仪器_电巢学堂:单片机系统EMC测试和故障排除
  2. php重定向mysql_使用.php文件生成MySQL转储
  3. rpm打包的流程包括以下哪些_品牌策划的流程包括哪些?
  4. bytes数组转string指定编码_好程序员Java学习路线分享Java基础之string
  5. excel表中怎么插入visio_Excel工作表中的排序,你真的掌握吗?10张动图带你了解!...
  6. python绘制条形图 中文横坐标_Pyhon绘制数据范围条形图
  7. python 判断线程状态_Python 线程和进程
  8. Linux虚拟化:KVM影子页表
  9. 分布式定时器的实现原理
  10. Linux开机启动过程:从点下电源键到系统正常运行