请参阅下面的示例,如果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;
答案 0 :(得分:0)
在Excel 2007和Excel 2010下,工作表有1048576行。我检查了你的代码的一个稍微修改过的版本,并且它与完整的数字(long rowLimit = 1048576)一起工作得很好,虽然它需要一段时间。
您的代码中的一项更改是我在Workbooks.Add中删除了该模板。您的模板可能是个问题 - 也许它是一个Excel 2003风格的.xls文件,并且限制了行数?