删除20,000多行Excel文件中的第一行时,打开XML SDK v2.0性能问题

时间:2009-12-10 01:58:19

标签: performance excel openxml-sdk openxml

使用OpenXML SDK v2.0删除20,000多行Excel文件中的第一行时,是否有人遇到性能问题?

我正在使用Open XML SDK文档中建议的删除行编码。使用Open XML SDK删除第一行只需要几分钟,但在Excel应用程序中只需要一秒钟。

我最终发现瓶颈实际上是在处理行删除的泡沫方法。删除的行后有许多行更新。所以在我的情况下,有大约20,000行需要更新,逐行向上移动数据。

我想知道是否有更快的方法来删除行。

有人有想法吗?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

解压缩文件,操作文件并重新打包文件的方法非常错误。

这个怎么样:如果你说,它在Excel中工作正常:你试过使用Interop吗?这将启动一个新的Excel实例(可见或不可见),然后您可以打开文件,删除该行,再次保存并关闭该应用程序。

using System;
using System.IO;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
public void OpenAndCloseExcel() 
{
    Excel.Application excelApp = new Excel.Application();
    // Open Workbook, open Worksheet, delete line, Save
    excelApp.Quit();
}

Range-object符合多种用途。也用于删除元素。看看:MSDN Range-Description。还有一个提示:Interop使用Excel,因此所有对象都必须使用基于1的索引进行处理! 有关更多资源,请查看this StackOverflow-thread