Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Excel2007中获取范围,是否仍有行限制?_C#_Excel_Range - Fatal编程技术网

C# 在Excel2007中获取范围,是否仍有行限制?

C# 在Excel2007中获取范围,是否仍有行限制?,c#,excel,range,C#,Excel,Range,请参见下面的示例,如果行限制小于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; +

请参见下面的示例,如果行限制小于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=Microsoft.Office.Interop.Excel;
长行限制=65537;
对象[,]项=新对象[rowLimit,5];
对于(长行索引=0;行索引<行限制;++行索引)
{
对于(长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=“测试表”;
Excel.Range-topLeft=(Excel.Range)xlsheet.Cells[1,1];
Excel.Range bottomRight=(Excel.Range)xlsheet.Cells[行限制,5];//如果rowLimit>65536,此行总是例外
Excel.Range Range=xlsheet.Range[左上角,右下角];
范围.值=项目;

在Excel 2007和Excel 2010下,工作表有1048576行。我检查了您的代码的一个稍微修改的版本,它对完整的数字(long-rowLimit=1048576)运行得很好,尽管这需要一些时间


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

Odd,适用于相同版本(c#2k8)
Excel.Range bottomRight=(Excel.Range)xlsheet.Cells[9999999,5];bottomRight.Value2=“123”;xlWorkBook.SaveCopyAs(…)
的行为与预期一致。谢谢,仍然不确定为什么它在我的开发机器上不起作用,但它对其他所有人都起作用。谢谢你看一看。