Получение диапазона в Excel 2007, есть ли еще предел строки? - PullRequest
0 голосов
/ 26 апреля 2011

Пожалуйста, посмотрите пример ниже, этот код работает просто отлично, если rowLimit меньше 65536, я использую библиотеку объектов Micorsoft Excel 12.0, v1.6, кто-нибудь знает об обходном пути или это было исправлено в загрузке?

using Excel = Microsoft.Office.Interop.Excel;

long rowLimit = 65537;

object[,] items = new object[rowLimit, 5];

for( long rowIndex = 0; rowIndex < rowLimit; ++rowIndex )
{
    for( long columnIndex = 0; columnIndex < 5; ++columnIndex )
    {
        items[rowIndex, columnIndex] = String.Format( "{0}-{1}", rowIndex, columnIndex );
    }
}

var xlApp = new Excel.Application();
var xlWorkBook = xlApp.Workbooks.Add( Excel.XlWBATemplate.xlWBATWorksheet );
var xlWorkSheet = xlWorkBook.Worksheets.Add();
xlWorkSheet.Name = "Test Sheet";

Excel.Range topLeft = (Excel.Range)xlWorkSheet.Cells[1,1];
Excel.Range bottomRight = (Excel.Range)xlWorkSheet.Cells[rowLimit, 5]; // THIS LINE ALWAYS EXCEPTIONS IF rowLimit > 65536
Excel.Range range = xlWorkSheet.Range[topLeft, bottomRight];
range.Value = items;

1 Ответ

0 голосов
/ 27 апреля 2011

В Excel 2007 и Excel 2010 листы имеют 1048576 строк. Я проверил немного измененную версию вашего кода, и он работал нормально с полным номером (long rowLimit = 1048576), хотя это заняло некоторое время.

Одним из изменений в вашем коде является то, что я удалил шаблон в Workbooks.Add. Может ли быть проблема с вашим шаблоном - может быть, это файл .xls в стиле Excel 2003, который ограничивает количество строк?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...