我通过C#中的互操作excel对象使用UsedRange来获取工作表的最后一行。新创建的工作表仅编辑了Name属性。然而,当我得到ws.UsedRange.Rows.Count时,我得到了超过10k的内存。为什么它不给我0或1?如何才能获得真正的最后一行?
Application xlApp = null;
Worksheet temp;
Range cell;
int row;
int col;
int i;
xlApp = new Application();
xlApp.Visible = true;
Workbook wbDetail = xlApp.Workbooks.Add();
wbDetail.Worksheets.Add(Type.Missing, Type.Missing, 26, XlWBATemplate.xlWBATWorksheet);
i = 0;
while(i < 29)
{
temp = (Worksheet)wbDetail.Worksheets[i+1];
temp.Name = "TITLE_"+i
i++;
}
DateTime reqdate;
i=0;
while(i<29)
{
temp = (Worksheet)wbDetail.Worksheets["TITLE_"+i];
int j = 0;
temp.get_Range("A1", Type.Missing).Value = "TITLE STUFF";
row = temp.UsedRange.Rows.Count;
while(j < 50)
{
cell = (Range)temp.Cells[row+1, j+1];
cell.Value = j;
j++;
}
}
i++
}
wbDetail.Save();发布于 2012-10-04 04:21:10
在某些情况下(不确定它们是什么),Excel将具有没有任何实际值(除了空白、null等)的“已用”行。
我过去的方法是将工作表的值加载到数组中*,然后向后循环数组的各行,直到其中一列具有非空值。
*-我强烈建议不要在循环中调用Cells[i,j]。加载数组中的值,然后循环数组:
var tempValues = temp.Value;
...
while(j < 50)
{
tempValues[row+1, j+1] = j
j++;
}
temp.Value = tempValueshttps://stackoverflow.com/questions/12715863
复制相似问题