-2

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

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

接着

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

以上所有通过代码。有可能吗?有什么想法吗?

提前谢谢!

4

2 回答 2

0

当我努力寻找合适的解决方案时,我决定分享我的实施

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/创建-windows-service-in-c/

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

需要注意的一些事项:

- 通常服务在本地运行。如果你想打印在“用户模式”下运行你的服务,通过 services.msc 检查你的服务属性

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

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

于 2013-01-10T14:35:32.900 回答
0

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

于 2013-01-07T12:27:24.470 回答