[英]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.