【问题标题】:Reading Excel with JXL, cell count per row changing between rows使用 JXL 读取 Excel,每行的单元格计数在行之间变化
【发布时间】:2012-09-14 17:26:00
【问题描述】:

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

【问题讨论】:

    标签: java excel jxl


    【解决方案1】:

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

    【讨论】:

    • 我的经历和@Niek一样,空单元格好像会改变一行单元格的数量。
    【解决方案2】:

    而不是像这样访问单元格数据:

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 2012-06-07
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 2015-07-16
      • 2011-03-24
      相关资源
      最近更新 更多