문제

할 사람이 걸쳐 올 성능 문제를 삭제할 때 첫 번째 행에서 20,000+행 Excel 파일을 사용하여 open xml SDK v2.0?

내가 사용하여 삭제 행 코딩에서 제시한 오픈 XML SDK 문서입니다.그것은 나에게 여러분을 삭제하는 첫 번째 행을 사용하여 Open XML SDK 지만,그것은 단지 단에서 두 번째 Excel 애플리케이션.

그리고 결국에는 것을 발견 병 목 실제로에서 거품 접근 방식을 다루는 행 삭제합니다.많은 행 업데이트한 후 삭제됩니다.그래서 나의 케이스,거기에 주변에 20,000 행 업데이트를 이동,데이터 연속으로 행합니다.

내가 궁금해 있는 경우 신속하게 하는 방법 행 삭제합니다.

할 사람이 아이디어가 있습니까?

도움이 되었습니까?

해결책

만,나쁜 소식은 여기: 네,그것은 방법입니다.

당신이 얻을 수 있습니다 약간 더 나은 성능을 움직이는 외부의 SDK 으로 자신 System.IO.Packaging 그냥 만들기 IEnumerable/List 에서 다음과 같 Linq-to-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 범위 설명. 하나 더 힌트 : Interop은 Excel을 사용하므로 모든 객체는 1 기반 인덱스로 연주해야합니다! 더 많은 리소스를 보려면 살펴보십시오 이 stackoverflow-shread.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top