我想在程序执行结束时删除空行。详细说明我在预定义的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
答案 0 :(得分:2)
您可以使用范围对象来完成。我在这里假设您正在使用Excel互操作。
假设你打开了你的书,然后设置范围然后删除它应该看起来像这样
DISTINCT
您也可以尝试使用:
ApplicationClass excel = new ApplicationClass();
//...
Microsoft.Office.Interop.Excel.Range cel = (Range)excel.Cells[rowIndex, columnIndex];
cel.Delete();
查看以下链接
和
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();
}