我需要使用封闭的XML从我的Excel中删除空行。这些行以前有一些数据,但现在为空。我尝试使用row.IsEmpty(),但它根本不会删除任何行。以下是到目前为止我尝试过的内容:
using (XLWorkbook workBook = new XLWorkbook(destinationPath))
{
int worksheetCount = workBook.Worksheets.Count;
for(int worksheetIndex = 1; worksheetIndex <= worksheetCount; worksheetIndex++)
{
//Read the first Sheet from Excel file.
IXLWorksheet workSheet = workBook.Worksheet(1);
int rowCount = workSheet.RowsUsed().Count();
//Loop through the Worksheet rows.
foreach (IXLRow row in workSheet.RowsUsed())
{
if (row.IsEmpty())
{
row.Delete();
}
}
workBook.Save();
int rowCountNew = workSheet.RowsUsed().Count();
我的rowCount和rowCountNew实际上具有相同的值,但实际上它们应该不同。而且,即使我在excel中有空行,我的if条件仍然保持为false,因此永远不会命中row.delete()。希望我的问题有意义。
谢谢!
您的核心问题是找出row.IsEmpty()
返回false的原因。对于无参数的.IsEmpty()
重载,ClosedXML使用XLCellsUsedOptions.AllContents
值确定单元格是否为空。这意味着,如果单元格包含值或注释,则将其视为非空。我的猜测是您忘记清除一些评论。