读取excel文件(.xlsx)并使用Java修改某些单元格的最佳方法是什么?

时间:2014-10-20 22:45:00

标签: java eclipse excel

所以我需要读取一个包含大约5200行和11列的excel文件(.xlsx)。我需要读取D到M列,找到包含8位数字(ID)的所有单元格。

然后我需要用名称替换包含ID的单元格。我将通过运行一个简单的SQL查询来获取名称。

然后我想用更新的更改编写excel文件。 我使用过POI,但我对如何更新单元格感到困惑。

我想我的问题是在Java中最好的解决方法是什么? 任何意见都是有价值的。

感谢。

1 个答案:

答案 0 :(得分:1)

步骤,使用Apache POI:

  1. 在输入模式下打开excel文件(输入流)

  2. 使用POI API并阅读Excel内容

  3. 使用不同的setCellValue方法更新单元格的值。

  4. 关闭Excel输入文件(输入流)

  5. 在输出模式(outputstream)中打开相同的excel文件

  6. 在输出文件中写入更新的工作簿的内容

  7. 关闭输出excel文件

  8. <强>示例:

    try {
    
    FileInputStream file = new FileInputStream(new File("C:\\update.xls"));
    
    HSSFWorkbook workbook = new HSSFWorkbook(file);
    HSSFSheet sheet = workbook.getSheetAt(0);
    Cell cell = null;
    
    //Update the value of cell
    cell = sheet.getRow(1).getCell(2);
    cell.setCellValue(cell.getNumericCellValue() * 2);
    cell = sheet.getRow(2).getCell(2);
    cell.setCellValue(cell.getNumericCellValue() * 2);
    cell = sheet.getRow(3).getCell(2);
    cell.setCellValue(cell.getNumericCellValue() * 2);
    
    file.close();
    
    FileOutputStream outFile =new FileOutputStream(new File("C:\\update.xls"));
    workbook.write(outFile);
    outFile.close();
    
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }