我试图找到一个解决方案,但没有任何问题符合我的问题。我正在使用JXL读取excel电子表格并将每行转换为指定的对象。行中的每个单元格对应于我正在创建的对象的属性。我的电子表格有41列,读完375行后,每行的单元格数从41变为32.我无法弄清楚原因。
这是我循环遍历行并检索单元格的代码:
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
// Loop over first 10 column and lines
for (int row=1; row < sheet.getRows();row++)
{
EventData event = new EventData();
// we skip first row bc that should be header info
//now iterate through columns in row
try
{
Cell[] cell = sheet.getRow(row);
event.Name = cell[0].getContents();
event.Location = cell[1].getContents();
其余代码继续抓取每个单元格的内容并相应地分配它们。但是当尝试访问第376行的单元格[32]时,我得到一个超出界限的异常。
答案 0 :(得分:3)
难道不仅仅是那行上的单元格[32]之后的所有内容都是空的,因此数组中的单元格[32](和向上)根本不会被创建吗? 我现在刚刚开始使用jxl,我认为这就是我所看到的
答案 1 :(得分:0)
而不是按以下方式访问单元格数据:
Cell[] cell = sheet.getRow(row);
event.Name = cell[0].getContents();
event.Location = cell[1].getContents();
尝试以以下方式访问数据:
sheet.getCell(column, row);
完整代码为:
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
// Loop over first 10 column and lines
for (int row=1; row < sheet.getRows();row++)
{
EventData event = new EventData();
// we skip first row bc that should be header info
//now iterate through columns in row
try
{
event.Name = sheet.getCell(0, row).getContents();
event.Location = sheet.getCell(1, row).getContents();
}
}