C# 如何在C语言中从工作簿中删除空工作表#

C# 如何在C语言中从工作簿中删除空工作表#,c#,excel,excel-interop,C#,Excel,Excel Interop,我正在用工作表填满我的工作簿,我不知道为什么工作簿中出现了空的工作表 我需要删除空表 或 确定创建空图纸的原因 这方面的任何帮助都会有帮助。 excelApp.DisplayAlerts=false; 工作簿=(Microsoft.Office.Interop.Excel.u工作簿)(excelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet)); //数据表到Excel forea

我正在用工作表填满我的工作簿,我不知道为什么工作簿中出现了空的工作表

  • 我需要删除空表 或
  • 确定创建空图纸的原因
这方面的任何帮助都会有帮助。

excelApp.DisplayAlerts=false;
工作簿=(Microsoft.Office.Interop.Excel.u工作簿)(excelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet));
//数据表到Excel
foreach(dataSet.Tables中的DataTable表)
{
工作表=(Microsoft.Office.Interop.Excel.workSheet)excelApp.Worksheets.Add(Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
工作表.Name=table.TableName;
for(int i=0;i
使用MS Interop,我看不到
MaxRow
MaxCol
的任何属性。因此,看看您发布的代码,我猜您会得到错误,因为这些属性不存在。您要找的是
UsedRange
。这将返回一个矩形区域,该区域将包含工作表中包含某些值的所有单元格。如果使用的范围返回1或更少,则工作表为空。下面的代码将完成您的要求。希望这有帮助

foreach (Worksheet sheet in xlWorkbook.Worksheets) {
  if (sheet.UsedRange.Count < 2) {
    sheet.Delete();
  }
}
foreach(xlWorkbook.Worksheets中的工作表){
如果(sheet.UsedRange.Count<2){
sheet.Delete();
}
}

无法删除空单元格只需放置一些警告框我不想删除空单元格,我想从工作簿中删除所有空工作表。因为您是在循环的开头和结尾添加它们的
.worksheets.Add
谢谢您的回复,我不知道如何在不创建工作表的情况下添加工作表。你能帮我创建一个工作表,然后用一个例子将其添加到工作簿中吗?谢谢你,JohnG,你建议的解决方案很有效。但与其创建一个空工作表然后删除它,不如根本不创建它。我正在foreach循环中添加两个工作表(worksheets.Add)。我想知道如何通过在foreach中只调用一个Worksheets.Add.First行来实现这一点,
if((table.Columns==0)和&(table.Rows==0)){continue;}
foreach (Worksheet sheet in xlWorkbook.Worksheets) {
  if (sheet.UsedRange.Count < 2) {
    sheet.Delete();
  }
}