我正在尝试创建一个包含多个工作表的 Excel 报告。这些工作表中的每一个都有来自 SQL 查询结果的 DataTable 的数据。初始工作表已正确创建,但是,我无法创建第二个工作表。我知道我做错了什么,但我只是不确定如何在不创建新的 Excel 工作簿的情况下使用下面的代码添加工作表。
我正在考虑只创建工作簿,然后添加工作表。但我似乎无法让它全部点击。
这就是我正在尝试的:
static void Main(string[] args)
{
Excel_FromDataTable(testingTable);
Excel_FromDataTable(testingTable);
}
}
private static void Excel_FromDataTable(DataTable dt)
{
var excel = new Microsoft.Office.Interop.Excel.Application();
var workbook = excel.Workbooks.Add(true);
int iCol = 0;
foreach (DataColumn c in dt.Columns)
{
iCol++;
excel.Cells[1, iCol] = c.ColumnName;
}
int iRow = 0;
foreach (DataRow r in dt.Rows)
{
iRow++;
// add each row's cell data...
iCol = 0;
foreach (DataColumn c in dt.Columns)
{
iCol++;
excel.Cells[iRow + 1, iCol] = r[c.ColumnName];
}
}
// Global missing reference for objects we are not defining...
object missing = System.Reflection.Missing.Value;
// If wanting to Save the workbook...
workbook.SaveAs(@"C:\MyExcelWorkBook2.xlsx");
workbook.Close();
}
最佳答案
考虑一下
Static void Main()
{
var excel = new Microsoft.Office.Interop.Excel.Application();
var workbook = excel.Workbooks.Add(true);
AddExcelSheet(dt1, workbook);
AddExcelSheet(dt2, workbook);
workbook.SaveAs(@"C:\MyExcelWorkBook2.xlsx");
workbook.Close();
}
private static void AddExcelSheet(DataTable dt, Workbook wb)
{
Excel.Sheets sheets = wb.Sheets;
Excel.Worksheet newSheet = sheets.Add();
int iCol = 0;
foreach (DataColumn c in dt.Columns)
{
iCol++;
newSheet.Cells[1, iCol] = c.ColumnName;
}
int iRow = 0;
foreach (DataRow r in dt.Rows)
{
iRow++;
// add each row's cell data...
iCol = 0;
foreach (DataColumn c in dt.Columns)
{
iCol++;
newSheet.Cells[iRow + 1, iCol] = r[c.ColumnName];
}
}
关于c# - 如何从 DataTable 向 Excel 添加其他工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980640/