c# - 如何从 DataTable 向 Excel 添加其他工作表

标签 c# .net excel vsto

我正在尝试创建一个包含多个工作表的 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/

相关文章:

c# - 已添加具有相同键的项目 c# 错误

javascript - C# 编码和 Javascript 解码

c# - 为什么 f(double) 对于 f(long) 比 f(long, int=0) 更匹配?

c# - 用于 token 的 Google OAuth 数据存储

c# - 将 Icon 对象与 byte[] 相互转换会导致质量下降

c# - 从 .Net 发送电子邮件

json - 反转 JSON 请求的输出

c# - 如何在屏幕中央显示工具提示?

vba - 这些求和函数之间的可靠性有差异吗?

java - 使用Java更新Excel文件(插入行)