7

我已经尝试找到解决方案,但没有找到与我的问题相匹配的解决方案。我正在使用 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] 时,我得到了一个越​​界异常。

4

2 回答 2

3

难道不仅仅是该行上单元格[32]之后的所有内容都是空的,因此根本没有创建数组中的单元格[32](及以上)吗?我现在刚从 jxl 开始,我认为这就是我所看到的

于 2012-11-29T14:58:24.220 回答
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();
    }
}
于 2019-04-01T06:19:35.060 回答