У меня есть приложение C#, целью которого является хранение большого количества данных. Я использую Microsoft.Office.Interop.Excel (Microsoft.Office.Interop.Excel.dll Version 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). Я не понимаю, почему interops используют этот предел, когда Excel 2007 (моя версия) имеет документированный предел в 1.048.576 строк.
С другой стороны, если я заменю выше «LINE не работает» в дальнейшем, он, кажется, использует ограничение строки Excel 2007 и исключение исчезает:
excelWorkBook = excelApp.Workbooks.Open(@"H:\Workbook1.xlsx");//*--------> LINE WORKING */
Примечание: " Workbook1.xlsx "является пустой книгой, ранее сохраненной как" Книга Excel (* .xlsx) "
Может кто-нибудь, пожалуйста, скажите, какое колдовство мне нужно сделать, чтобы настроить объекты Excel Interop на использование Excel 2007 по умолчанию, желательно без сохранения ранее сохраненного файла .xlsx?
Нужно ли вам генерировать файл Excel. Вы можете сгенерировать CSV-файл, который будет намного легче обрабатывать. Вы можете избежать ограничения строки в Excel. – user3501749
Вы используете файл .xls? Если это может быть так, ваша проблема. –
Если у вас нет особых причин использовать Interop (например, надстройка Excel и вы делаете это в интерактивном режиме), то я настоятельно рекомендую вам не создавать файлы Excel таким образом. Он очень медленный и [не поддерживается в некоторых сценариях] (https://support.microsoft.com/en-gb/help/257757/considerations-for-server-side-automation-of-office). Что-то в управляемом коде, например [ClosedXML] (https://github.com/ClosedXML/ClosedXML), может быть лучше. –