如何使用SQL Server 2012生成具有多张工作表的Excel文件?

问题描述 投票:0回答:1

我需要在SQL Server 2012中创建一个存储过程或查询,以从C#代码中获取数据表,并根据该数据表中存在的数据创建一个包含多张工作表的Excel文件。

以下面的数据为例,我有一个函数GetDate返回数据表。

创建具有两张纸的文件ABC.xlsx-第一张纸名称源和第二张纸名称类型,并基于数据加载与每张纸有关的数据。

因此结果将是一个新文件Abc.xlsx,其中包含两页SourceTypes,并且每一页都有一行数据。

public static DataTable GetData() 
{
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("PartId", typeof(int));
    dataTable.Columns.Add("Company", typeof(string));
    dataTable.Columns.Add("Files", typeof(string));
    dataTable.Columns.Add("Tab", typeof(string));

    dataTable.Rows.Add(1222,"micro","Abc","source");
    dataTable.Rows.Add(1321, "silicon", "Abc", "Types");

    return dataTable;
}

SQL Server 2012是否可以创建具有多个工作表的Excel文件?

我可以在C#中做到这一点,但是从SQL中我无法做到;所以我怎么可以通过SQL Server 2012实现呢?

tsql stored-procedures ssis sql-server-2012 c#-5.0
1个回答
0
投票

SQL存储过程对此没有必要。您可以直接通过C#遍历数据行来创建.xlsx文件。类似于:

var xlApp = new Microsoft.Office.Interop.Excel.Application();
var workbook = xlApp.Workbooks.Add();
var data = GetData();
foreach (DataRow row in data.Rows)
{
     var worksheet = xlApp.Worksheets.Add();
     worksheet.Name = row["Tab"].ToString();
}

xlWorkbook.SaveAs("path.xlsx");

有关Microsoft.Office.Interop here的一些更详细的文档

个人,我将使用NuGet包来创建.xlsx文件,因为使用Microsoft.Office.Interop,您需要将Office中的Excel实际安装在运行代码的计算机上(也许不会安装在您的部署服务器,可能会花更多的钱来安装它。

我对此的个人偏好是this NuGet软件包。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.