gpt4 book ai didi

c# - 如何在 C# 中从工作簿中删除空工作表

转载 作者:行者123 更新时间:2023-12-04 20:11:32 24 4
gpt4 key购买 nike

我正在用工作表填满我的工作簿,但我无法弄清楚为什么我的工作簿中会出现空工作表。

  • 我需要删除空工作表
  • 确定创建空工作表的原因。

  • 对此的任何帮助都会有所帮助。
    Output excel; Sheet1, Sheet3, Sheet5, Sheet7 are empty sheets
    excelApp.DisplayAlerts = false;
    workBook = (Microsoft.Office.Interop.Excel._Workbook)(excelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet));

    //DataTable to Excel
    foreach(DataTable table in dataSet.Tables)
    {
    workSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    workSheet.Name = table.TableName;

    for (int i = 0; i < table.Columns.Count; i++)
    {
    workSheet.Cells[1, (i + 1)] = table.Columns[i].ColumnName;
    }

    for (int i = 0; i < table.Rows.Count; i++)
    {
    for (int k = 0; k < table.Columns.Count; k++)
    {
    workSheet.Cells[(i + 2), (k + 1)] = table.Rows[i][k];
    }
    }
    workBook.Worksheets.Add(workSheet);
    }

    //Trying to delete empty sheets
    foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in workBook.Sheets)
    {
    excelApp.DisplayAlerts = false;
    if (sheet.Cells.MaxRow == -1 && sheet.Cells.MaxColumn == -1)
    {
    sheet.Delete();
    }
    }

    最佳答案

    使用 MS Interop 我看不到 MaxRow 的任何属性和 MaxCol .因此,查看您发布的代码,我猜您会收到错误,因为这些属性不存在。你要找的是UsedRange .这将返回一个矩形范围,该范围将包含工作表中包含某些值的所有单元格。如果使用的范围返回 1 或更少,则工作表为空。下面的代码将完成您的要求。希望这可以帮助。

    foreach (Worksheet sheet in xlWorkbook.Worksheets) {
    if (sheet.UsedRange.Count < 2) {
    sheet.Delete();
    }
    }

    关于c# - 如何在 C# 中从工作簿中删除空工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198015/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com