Ven*_*hev 1 c# spreadsheetgear
我的表单中有一个 SpreadSheetGear WorkbookView。SpreadSheetGear WorkbookView 已填充 10 行和 10 列的 Excel 文件。我想使用下面的代码从单元格中获取数据:
for (int i = 0; i < cells.Range.RowCount; i++)
{
for (int j = 0; j < cells.Range.ColumnCount; j++)
{
arrLstWorkBookView.Add(cells[i, j].Text);
arrLstOutputData.Add(cells[i, j].Text);
}
}
Run Code Online (Sandbox Code Playgroud)
调试器向我显示rowCount = 1048576而不是10,并且rowCount = 16384而不是10。
如何解决WorkbookView的问题,并从Excel文件中获取正确的行数和列数,行数应为10,列数应为10。
您没有提供一行代码来指示变量cells的来源,但如果您获得的行数为 1,048,576,这对我来说表明来自cellsIWorksheet。细胞/范围,两者均表示工作表中的所有单元格 (A1:XFD1048576)。
如果您尝试迭代工作表中的某个较小范围,则需要使用IWorksheet.Cells["A1_Ref"]或指定此范围IWorksheet.Cells[row1,col1,row2,col2]指定该范围。例子:
// The following two lines are equivalent\nIRange cells = worksheet.Cells["A1:J10"];\nIRange cells = worksheet.Cells[0, 0, 9, 9];\n// ...the rest of your code...\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想迭代工作表的“使用范围”,您可能需要使用 IWorksheet。使用范围。例子:
\n\nIRange cells = worksheet.UsedRange;\nRun Code Online (Sandbox Code Playgroud)\n\n此外,您对 cells.Range.RowCount 中的 Range 的调用是多余的,就像 IRange 一样。Range仅代表指定的 IRange。你可以只使用cells.RowCount.
您还可以考虑查看我们的 IRange 索引器文档 (IRange.Item(\xe2\x80\xa6)),其中演示了引用单元格的多种不同方法:\n http://www.spreadsheetgear.com/support /help/spreadsheetgear.net.7.0/#SpreadsheetGear2012.Core~SpreadsheetGear.IRange~Item.html
\n\n免责声明:我在 SpreadsheetGear 工作。
\n