많은 양의 데이터를 저장하는 C# 응용 프로그램이 있습니다. Microsoft.Office.Interop.Excel (Microsoft.Office.Interop.Excel.dll 버전 14.0.0.0)을 사용하여이 작업을 수행하고 있습니다. Excel 2007이 설치되어 있습니다. 객체의 큰 목록을 다음 반복을C# Excel Interop 행 제한 -> HRESULT : 0x800A03EC 예외 발생
excelApp = new Microsoft.Office.Interop.Excel.Application();
excelWorkBook = excelApp.Workbooks.Add(misValue);//*--------> LINE NOT WORKING */
excelWorksheetBeingWritten = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);
내 코드 및 행을 작성해야합니다 때마다 내가 좋아하는 뭔가를 할 :
나는 다음과 같은 라인을 사용
var startCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 1];
var endCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 2];
string[] tmpArray = new string[2] { stringVar1, stringVar2 };
tmpRange = excelWorksheetBeingWritten.Range[startCell, endCell];
tmpRange.Value = tmpArray;
excelLineCounter 65536을 초과하면 "HRESULT : 0x800A03EC 예외"가 발생합니다. Excel2007 이전 행 제한 (정확히 65536)을 완벽하게 알고 있습니다. Excel 2007 (내 버전)에 문서화 된 제한 인 1.048.576 행이있을 때 Interops에서 제한을 사용하는 이유는 무엇인지 이해할 수 없습니다. 내가 다음으로 위의 "작동하지 LINE"를 대체 할 경우 반면에
은, Excel 2007의 행 제한을 사용하는 것, 그리고 예외가 사라 :excelWorkBook = excelApp.Workbooks.Open(@"H:\Workbook1.xlsx");//*--------> LINE WORKING */
참고 " Workbook1.xlsx "는 이전에"Excel 통합 문서 (* .xlsx) "로 저장된 빈 통합 문서입니다
Excel Interop 개체가 Excel을 사용하도록 구성하려면 어떤 종류의 마법 작업을 수행해야하는지 알려주실 수 있습니까? 이전에 저장 한 빈 .xlsx 파일을 저장하지 않고도 기본적으로 2007 제한이 있습니까?
엑셀 파일을 생성하고 싶습니다. 처리가 훨씬 쉬워지는 .csv 파일을 생성 할 수 있습니다. Excel에서 행 제한을 피할 수 있습니다. – user3501749
파일 .xls를 사용하고 있습니까? 그렇다면 문제가 될 수 있습니다. –
Interop (예 : Excel Add-in을 대화식으로 사용하는 경우)를 사용해야하는 특별한 이유가 없다면 Excel 파일을 이렇게 만들지 말 것을 강력히 권합니다. 매우 느리고 일부 시나리오에서는 지원되지 않습니다 (https://support.microsoft.com/en-gb/help/257757/considerations-for-server-side-automation-of-office). [ClosedXML] (https://github.com/ClosedXML/ClosedXML)과 같은 관리 코드가 더 적합 할 수 있습니다. –