如何使用 SQL Server 2012 生成具有多个 sheet 的 Excel 文件?

How to generating Excel File with multi sheet by using SQL Server 2012?

我需要在 SQL Server 2012 中创建一个存储过程或查询以从 C# 代码中获取数据 table,并创建一个包含多个 sheet 的 Excel 文件]s 基于所述数据 table.

中存在的数据

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

使用两个 sheet 创建文件 ABC.xlsx - 第一个 sheet 名称源和第二个 sheet 名称类型,并加载与每个 sheet 相关的数据基于数据。

所以结果将是一个新文件Abc.xlsx,有两个sheet SourceTypes,每个sheet 有一行数据。

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 能否创建包含多个 sheet 的 Excel 文件?

我可以在 C# 中做到这一点,但从 SQL 我不能;那么我怎样才能通过任何方式从 SQL Server 2012 实现呢?

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 你需要 Excel 来自 Office 的 Excel 实际上安装在你 运行 的机器上代码(也许不会安装在您的部署服务器上,安装它可能会花费更多的钱)。

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

祝你好运!