目的:要删除Excel中多行。
现有一个方法:能删除Excel中单行(根据Rowindex)如下:
/// <summary>
/// 删除行
/// </summary>
/// <param name="rowIndex"></param>
public void DeleteRows(int rowIndex)
{
try
{
for (int n = 1; n <= this.WorkSheetCount; n++)
{
workSheet = (Excel.Worksheet)workBook.Worksheets[n];
range = (Excel.Range)workSheet.Rows[rowIndex, this.missing];
range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
}
}
catch (Exception e)
{
this.KillExcelProcess();
throw e;
}
}
但是多次调用后发现,这种方法效率很低(比OleDbDataAdapter慢多了,但OleDbDataAdapter不支持删除行),
删除100条记录用35秒.
有没有哪位大虾能解决的?
现有一个方法:能删除Excel中单行(根据Rowindex)如下:
/// <summary>
/// 删除行
/// </summary>
/// <param name="rowIndex"></param>
public void DeleteRows(int rowIndex)
{
try
{
for (int n = 1; n <= this.WorkSheetCount; n++)
{
workSheet = (Excel.Worksheet)workBook.Worksheets[n];
range = (Excel.Range)workSheet.Rows[rowIndex, this.missing];
range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
}
}
catch (Exception e)
{
this.KillExcelProcess();
throw e;
}
}
但是多次调用后发现,这种方法效率很低(比OleDbDataAdapter慢多了,但OleDbDataAdapter不支持删除行),
删除100条记录用35秒.
有没有哪位大虾能解决的?
或使用宏
range.ClearContents();
用get_Range方法好像不行,有隔行删除的情况在。
@ huming_h(Hunk)
导入datatable删除之后,再写回excel?
可能会改变Excel格式什么的吧。