不要使用任何OpenXML的SDK V2.0在20,000行Excel文件删除第一行时遇到性能问题?

我使用删除行编码所建议的开放XML SDK文件内。我花了几分钟的时间只是使用的Open XML SDK删除第一行,但只需要短短第二Excel中的一个应用。

我最终发现该瓶颈实际上是在处理行删除气泡向上的方法。有许多行删除的行后更新。因此,在我的情况下,大约有20000行被更新,由行移位了的数据列。

我不知道是否有做的行删除任何更快的方法。

不要任何人有一个想法?

有帮助吗?

解决方案

那么,这里的坏消息是:是的,事实就是

的方式。

您可能会表现稍好移动SDK本身以外为System.IO.Packaging,只是创造一个IEnumerable / List像LINQ到XML的所有行,复制到没有第一排一个新的IEnumerable / List,改写r<row r="?"/>属性是它的位置在索引中,以及写入,超过现有孩子备份内<sheetData/>

您就需要那种做同样的任何字符串中的 sharedStrings.xml 的文件 - 即除去了被删除的行中的<ssi>.<si>的元素,但在这种情况下,他们是现在隐含索引,所以你可以逃脱只是完全删除它们。

其他提示

解压缩文件,操纵它和重新包装它的做法是非常错误剪枝。

这个怎么样:如果你说,它在Excel中正常工作:您是否尝试过使用互操作?这将启动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();
}

的范围内,目的是合格用于许多目的。还删除元素。看看: MSDN范围,说明。还有一个提示:互操作使用Excel中,因此所有的对象都与A-1开始的索引被不客气! 欲了解更多的资源来看看这个StackOverflow的线程

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top