使用 C# 删除 excel 中的空行

Removing empty rows in excel using C#

我想在程序执行结束时删除空行。具体来说,我在预定义的 excel 工作表中使用 C# 计算后插入了一些结果。最后,我需要以编程方式 delete/remove 空行。任何人都可以建议解决方案。我的代码有点大,所以我无法在此处包含。为了您的理解,我给出了 excel 的一些输入和输出视图。在下面的输出 Excel 行 DE 中有空行我想以编程方式删除而不提及范围。

输入Excel/预定义Excel文件

A   1   2   3   4
B
C
D
E

输出Excel

A   1   2   3   4
B   ABc cde nAC 123
C   cdf fed x2  123
D
E

您可以使用范围对象来完成。我在这里假设您正在使用 Excel 互操作。

假设你打开了你的书,然后设置范围然后删除它它应该看起来像这样

ApplicationClass excel = new ApplicationClass();
//...

Microsoft.Office.Interop.Excel.Range cel = (Range)excel.Cells[rowIndex, columnIndex];
cel.Delete();

您也可以尝试使用:

for(int i = 1; i <=20; i++)
{
   excelRange = (Excel.Range)excelWorkSheet.Cells[i, 1];
   if (!string.IsNullOrEmpty(excelRange.Text.ToString()))
   {
       ((Range)excelWorkSheet.Rows[i]).Delete(excelRange);
   }
}

查看下面的link

https://social.msdn.microsoft.com/Forums/office/en-US/469fdf10-35cc-46b2-a875-7b974deb5659/how-to-delete-all-empty-rows-from-a-excel-sheet-using-microsoftofficeinteropexcel?forum=exceldev

这里 "Something" 是你的空值。

希望对您有所帮助。

下面的代码完美运行并为指定的行号和列号创建一个新的空白行:

Excel.Range rng = (Excel.Range)xlWorkSheet1.Cells[RowNumber, ColumnNumber];
                            Excel.Range Row1 = rng.EntireRow;
                            Row1.Insert(Excel.XlInsertShiftDirection.xlShiftDown, false);

您可以使用以下代码删除 Excel 文件中的空行

 xlApp = new Microsoft.Office.Interop.Excel.Application();
 Microsoft.Office.Interop.Excel.Workbook excelWorkbook = xlApp.Workbooks.Open(fileName);
 Microsoft.Office.Interop.Excel._Worksheet sheet = excelWorkbook.Sheets[1];
 var LastRow = sheet.UsedRange.Rows.Count;
 LastRow = LastRow + sheet.UsedRange.Row - 1;
 for (int i = 1; i <= LastRow; i++)
 {
   if (application.WorksheetFunction.CountA(sheet.Rows[i]) == 0)
       (sheet.Rows[i] as Microsoft.Office.Interop.Excel.Range).Delete();
 }

从 Excel 工作表中删除空行和空列的扩展方法。

/// <summary>
/// Deletes empty rows and columns from the end of the given worksheet
/// </summary>
public static void Trim(this Excel.Worksheet worksheet)
{
    worksheet.TrimColumns();
    worksheet.TrimRows();
}

/// <summary>
/// Deletes empty rows from the end of the given worksheet
/// </summary>
public static void TrimRows(this Excel.Worksheet worksheet)
{
    Excel.Range range = worksheet.UsedRange;
    while(worksheet.Application.WorksheetFunction.CountA(range.Rows[range.Rows.Count]) == 0)
        (range.Rows[range.Rows.Count] as Excel.Range).Delete();
}

/// <summary>
/// Deletes empty columns from the end of the given worksheet
/// </summary>
public static void TrimColumns(this Excel.Worksheet worksheet)
{
    Excel.Range range = worksheet.UsedRange;
    while(worksheet.Application.WorksheetFunction.CountA(range.Columns[range.Columns.Count]) == 0)
        (range.Columns[range.Columns.Count] as Excel.Range).Delete();
}