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

C# 如何使用封闭的xml以编程方式从excel中删除当前为空但已编辑过一次的行,c#,asp.net,excel,openxml,closedxml,C#,Asp.net,Excel,Openxml,Closedxml,我需要使用封闭的XML从excel中删除空行。这些行以前有一些数据,但现在为空。我尝试过使用row.IsEmpty(),但它根本不会删除任何行。以下是我迄今为止所做的尝试: using (XLWorkbook workBook = new XLWorkbook(destinationPath)) { int worksheetCount = workBook.Worksheets.Count; for(int worksheetIndex = 1; worksheetIndex

我需要使用封闭的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();
使用(XLWorkbook工作簿=新XLWorkbook(destinationPath))
{
int worksheetCount=workBook.Worksheets.Count;

对于(int worksheetIndex=1;worksheetIndex您的核心问题是找出为什么
row.IsEmpty()
返回false。对于无参数的
.IsEmpty()
重载,ClosedXML使用
XLCellsUsedOptions.AllContents
值来确定单元格是否为空。这意味着如果单元格包含值或注释,则该单元格被视为非空。我猜您忘了清除一些注释。

您好,您可以尝试删除整行吗?通常excel具有以下选项:向上、向下、向左或向右移动单元格。请无条件地尝试row.delete()函数,以查看删除将如何进行。hi@Gnyasha我不确定删除该条件会有什么帮助。但是,我确实尝试了,它只删除了所有行。但我只需要删除空的行。IsEmpty()没有检测到空行,因为所有这些行以前都有一些数据。知道如何实现这一点吗?嗨,Francois,我已经正确地检查了excel,只有6行有数据,还有大约10行以前有数据,但现在是空的,因此如果RowsUsed(),我的行计数返回计数为16而不是6。count()如果返回6,则不需要使用该条件,但实际情况并非如此。请尝试在返回
的行中确定确切的
IXLCell
。IsEmpty()==false