在Excel 2007中获取范围,是否仍有行限制?

时间:2011-04-26 15:14:41

标签: c# excel range

请参阅下面的示例,如果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 :(得分:0)

在Excel 2007和Excel 2010下,工作表有1048576行。我检查了你的代码的一个稍微修改过的版本,并且它与完整的数字(long rowLimit = 1048576)一起工作得很好,虽然它需要一段时间。

您的代码中的一项更改是我在Workbooks.Add中删除了该模板。您的模板可能是个问题 - 也许它是一个Excel 2003风格的.xls文件,并且限制了行数?