我需要在SQL Server 2012中创建一个存储过程或查询,以从C#代码中获取数据表,并根据该数据表中存在的数据创建一个包含多张工作表的Excel文件。
以下面的数据为例,我有一个函数GetDate
返回数据表。
创建具有两张纸的文件ABC.xlsx-第一张纸名称源和第二张纸名称类型,并基于数据加载与每张纸有关的数据。
因此结果将是一个新文件Abc.xlsx
,其中包含两页Source
和Types
,并且每一页都有一行数据。
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实现呢?
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软件包。
祝你好运!