如何从SQL server生成.txt文件,然后打印它

本文关键字:文件 然后 打印 txt 生成 SQL server | 更新日期: 2023-09-27 17:50:50

在谷歌上做了几个小时的研究后,我觉得我更困惑了…我想

a)通过存储过程从SQL server生成文本文件(.txt或.doc .pdf)。该文件包含一些简单布局格式的表数据

b)将此文件打印到网络打印机。

以上都是通过代码实现的。这可能吗?什么好主意吗?

提前感谢!

如何从SQL server生成.txt文件,然后打印它

我决定分享我的实现,因为我自己也在努力寻找一个合适的解决方案

a)在bcp实用程序的帮助下,将表数据提取到一个简单的.txt文件。在存储过程中编写类似于

的内容
EXEC xp_cmdshell 'bcp "SELECT * FROM [yourDatabase]..[yourTable]" queryout "C:'Folder'archive.txt" -T -w  -t ,' 

我使用","作为字段结束符。您可以在这里阅读有关bcp参数的更多信息http://msdn.microsoft.com/en-us/library/ms162802.aspx

b)现在我有原始数据,我想打印它。我实现了一个服务,它只检查是否创建了一个新文件。这是一个很好的教程http://midnightcubicle.wordpress.com/2011/04/25/creating-windows-service-in-c/

该服务调用一个运行.exe文件的新进程来完成这项工作。

注意事项:

-通常服务在本地运行。如果你想打印,在"用户模式"下运行服务通过services.msc

检查你的服务属性

-从bcp中提取的数据是"原始"格式,所以如果你想给你的文本一个很好的布局,你必须用StreamReader读取其内容,将其数据保存在内存中(例如列表中的对象-每行都是对象-每个字段都是属性),然后使用字符串。格式和其他格式化技术。

-您在windows控制台中和在打印机中看到的结果可能完全不同。这是因为您的控制台使用固定宽度字体,而您的打印机没有(至少在默认情况下)。因此,空格在打印机上占用的空间更少,而字母占用的空间取决于它们的实际宽度。考虑使用Lucida Console或其他定宽字体。

您可以使用EXEC @rc = master.dbo。Xp_cmdshell并调用exe来打印文件