繁体   English   中英

在Excel 2007中获取范围,行数仍然有限制吗?

[英]Getting a Range in Excel 2007, Is there still a row limit?

请参见下面的示例,如果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;

在Excel 2007和Excel 2010下,工作表有1048576行。 我检查了一下您的代码的稍作修改的版本,它与完整的数字(长rowLimit = 1048576)一起正常工作,尽管花了一段时间。

对您的代码所做的更改之一是,我在Workbooks.Add中删除了模板。 您的模板可能有问题-可能是Excel 2003样式的.xls文件,并且限制了行数吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM