我如何以编程方式从excel中删除行,这些行当前为空,但已使用封闭的xml编辑过一次

问题描述 投票:0回答:1

我需要使用封闭的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()。希望我的问题有意义。

谢谢!

c# asp.net excel openxml closedxml
1个回答
0
投票

您的核心问题是找出row.IsEmpty()返回false的原因。对于无参数的.IsEmpty()重载,ClosedXML使用XLCellsUsedOptions.AllContents值确定单元格是否为空。这意味着,如果单元格包含值或注释,则将其视为非空。我的猜测是您忘记清除一些评论。

© www.soinside.com 2019 - 2024. All rights reserved.