使用C#删除excel中的空行

时间:2015-05-08 07:19:49

标签: c# excel null delete-row

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

输入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

4 个答案:

答案 0 :(得分:2)

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

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

DISTINCT

您也可以尝试使用:

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

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

查看以下链接

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

https://stackoverflow.com/a/9952004/4373895 这里的“Something”是你的空值。

希望这有帮助。

答案 1 :(得分:1)

您可以使用以下代码

删除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();
 }

答案 2 :(得分:0)

以下代码可以很好地工作,并为指定的行号和列号创建一个新的空行:

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

答案 3 :(得分:0)

从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();
}