【发布时间】:2015-04-22 08:58:19
【问题描述】:
我正在开发一个显示来自 Microsoft SQL Server 动态数据透视表的数据的 web 应用程序。
通常我会尝试找出一种在 c# 中进行动态数据透视的方法,但在这种情况下,数据透视必须是 SQL Server 存储过程,因为其他应用程序也需要访问数据透视表。
这是 SQL:
DECLARE @DynamicPivot AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
SELECT
@ColumnName = ISNULL(@ColumnName + ',', '')
+ QUOTENAME(xml_tag_name)
FROM
(SELECT DISTINCT xml_tag_name FROM DataEntries) AS TagValues
SET @DynamicPivot =
N'SELECT DISTINCT capture_id, ' + @ColumnName + '
FROM DataEntries
PIVOT(MAX(xml_tag_value)
FOR xml_tag_name IN (' + @ColumnName + ')) AS PVTTable'
EXEC sp_executesql @DynamicPivot
我读过的所有文章都涉及正常导出到 Excel 或静态数据透视表。例如:Export Table from SQL Server to Excel 2007 using C#。
如何将此动态数据透视表导出到 Excel?
【问题讨论】:
-
你能做的第一步是什么?
-
你问我能不能正常导出?是的,我可以。
-
基本上,您是在尝试模拟 Excel 数据透视表的功能。为什么不使用 Excel 的数据透视表呢?它针对此类工作进行了优化,没有什么比动态更改列的能力更动态的了。
-
其他应用也需要访问数据库中的数据透视表。目前,这个特定的应用程序是唯一需要导出的应用程序。
-
我构建了一个单独的 C# 控制台应用程序,它通过 args 数组传递了一个查询和一个文件路径,然后将透视数据拉到 C# 中的数据表中,并使用 EPPlus 扩展库将数据表写入新的excel文件。然后我在 SQL Server 中使用 xp_cmdshell 调用了这个控制台应用程序,它很有效,而且很容易实现。
标签: c# sql-server export-to-excel dynamic-pivot