如何从C#中的工作簿中删除空的工作表

我正在用工作表填写我的工作簿,而且我无法弄清楚为什么空白工作表出现在我的工作簿中。

  • 我需要删除空白表或
  • 确定为什么要创build空白表单。

任何帮助,这将是有益的。 输出优秀; Sheet1,Sheet3,Sheet5,Sheet7是空白表单

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我没有看到MaxRowMaxCol任何属性。 所以看着你的发布的代码,我猜你会得到错误,因为这些属性不存在。 你正在寻找的是一个UsedRange 。 这将返回一个矩形范围,该范围将包含工作表中包含一些值的所有单元格。 如果使用的范围返回1或更less,则表单为空。 下面的代码将完成你所要求的。 希望这可以帮助。

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