作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用工作表填满我的工作簿,但我无法弄清楚为什么我的工作簿中会出现空工作表。
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/
我是一名优秀的程序员,十分优秀!