以编程方式将 SQL Server 视图导出到 Excel

Posted

技术标签:

【中文标题】以编程方式将 SQL Server 视图导出到 Excel【英文标题】:Programmatically export SQL Server views to Excel 【发布时间】:2010-12-06 17:41:12 【问题描述】:

大约 8 个月前我提出了this question,而我们正在运行 SQL Server 2000 的事实似乎是限制因素。我们最近升级到 SQL Server 2008,但我仍然找不到解决这个问题的可靠方法。

我们有一个与 SQL Server 数据库交互的 Access 应用程序,我们需要找到一种方法以编程方式将给定视图导出到 Excel 电子表格,或者至少是与 Excel 兼容的电子表格(CSV、制表符分隔等)。可以使用 bcp,但是其中一些视图包含带有换行符的字段,这在导入 Excel 时证明很麻烦。这些视图也多种多样,并且具有不可预测的列,因此据我所知,使用 OPENROWSET 也不是一种选择,因为您需要一个带有预定义行的 Excel 模板。

我们将不胜感激。我熟悉 Access 和 SQL Server,但我的知识有限。

【问题讨论】:

您是否考虑过反其道而行之,即将数据从视图中提取到 Excel 中?即只需使用 Data->From Other Sources->SQL Server,并在其中设置一个查询以将视图数据拉入。任何时候您想要重新填充数据,您只需单击 Excel 中的 Refresh 按钮...我通常会发现这比将数据从服务器推送到 Excel 中要好得多。 这对我的用户来说并不适用。我们正在运行一个相当广泛的 Access 应用程序,他们将需要选择他们的数据,然后从 Access 生成 Excel 文档。不过,好主意! 这个问题可能会受益于附加标签​​ excel 和 access-vba。最佳答案可能是来自“sql”、“excel”和“access”受众的想法或建议的交叉。 【参考方案1】:

当您说“以编程方式”时,您希望用哪种语言实现解决方案?

我建议将 SQL Server SSIS 作为一个很好的起点。如果您需要动态编码,而不是使用 BIDS/Visual Studio 设计器,.NET 库中对此提供了大量支持,允许您在 c#/VB 中完成

【讨论】:

我希望通过 Access 中的 SQL/VBscript 执行此操作。我的 C# 技能几乎不存在,而且我已经很久很久没有完成任何 Visual Studio / DLL 创作了。如果我不处理数据中的换行符,调用 BCP 效果很好。【参考方案2】:
    如果您想将数据导出为 CSV,您可以编写自己的函数来转义字段中的特殊字符

(在一个地方很痛苦)

    如果您使用 SSIS 将数据导出到 Excel,它将在每个单元格的开头加上撇号和开头

    如果您愿意花一些钱,您可以考虑使用我们的高级 ETL 处理器 首先,它始终可以在 Excel 中正常工作。 此外,它还具有数据导出组件,允许您选择表/视图以 使用掩码导出 您可以使用调度程序来自动化它,也可以从命令行运行一个包

本在线教程让您快速了解数据导出

http://www.dbsoftlab.com/online-tutorials/advanced-etl-processor/advanced-etl-pro-exporting-data-from-mysql-database-into-text-files.html

【讨论】:

以上是关于以编程方式将 SQL Server 视图导出到 Excel的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver的BCP导入导出

SQL Server 2005 - 以编程方式导出表(运行 .sql 文件来重建它)

SQL Server - 将存储过程从一个数据库复制到另一个数据库

以编程方式将表添加到 Microsoft SQL Server Compact 3.5 数据库

如何将 SQL Server 2005 查询导出到 CSV

将 SQL Server 数据库导出到 sqlite(或 SQL Server Compact)的最佳方式