POI 读取并修改 Excel(二)

  1. 步骤二 : 

  2. // 创建 Excel 文件的输入流对象

    FileInputStream excelFileInputStream = new FileInputStream("D:/employees.xlsx");

    // XSSFWorkbook 就代表一个 Excel 文件

    // 创建其对象,就打开这个 Excel 文件

    XSSFWorkbook workbook = new XSSFWorkbook(excelFileInputStream);

    // 输入流使用后,及时关闭这是文件流操作中极好的一个习惯!

    excelFileInputStream.close();

    // XSSFSheet 代表 Excel 文件中的一张表格

    // 我们通过 getSheetAt(0) 指定表格索引来获取对应表格

    // 注意表格索引从 0 开始

    XSSFSheet sheet = workbook.getSheetAt(0);

  3. 步骤三 : 循环读取表格并输出其内容

    // 开始循环表格数据,表格的行索引从 0 开始

    // employees.xlsx 第一行是标题行,我们从第二行开始, 对应的行索引是 1

    // sheet.getLastRowNum() : 获取当前表格中最后一行数据对应的行索引

    for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {

    // XSSFRow 代表一行数据

    XSSFRow row = sheet.getRow(rowIndex);

    if (row == null) {

    continue;

    }

    XSSFCell nameCell = row.getCell(0); // 姓名列

    XSSFCell genderCell = row.getCell(1); // 性别列

    XSSFCell ageCell = row.getCell(2); // 年龄列

    XSSFCell weightCell = row.getCell(3); // 体重列

    XSSFCell salaryCell = row.getCell(4); // 收入列

    StringBuilder employeeInfoBuilder = new StringBuilder();

    employeeInfoBuilder.append("员工信息 --> ")

    .append("姓名 : ").append(nameCell.getStringCellValue())

    .append(" , 性别 : ").append(genderCell.getStringCellValue())

    .append(" , 年龄 : ").append(ageCell.getNumericCellValue())

    .append(" , 体重(千克) : ").append(weightCell.getNumericCellValue())

    .append(" , 月收入(元) : ").append(salaryCell.getNumericCellValue());

    System.out.println(employeeInfoBuilder.toString());

    }

    // 操作完毕后,记得要将打开的 XSSFWorkbook 关闭

  4. workbook.close(); 

    1. 步骤四 : 向 Excel文件最后插入一条新数据,首先要创建一行数据

      // ------ 创建一行新的数据 ----------//

      // 指定行索引,创建一行数据, 行索引为当前最后一行的行索引 + 1

      int currentLastRowIndex = sheet.getLastRowNum();

      int newRowIndex = currentLastRowIndex + 1;

      XSSFRow newRow = sheet.createRow(newRowIndex);

      // 开始创建并设置该行每一单元格的信息,该行单元格的索引从 0 开始

      int cellIndex = 0;

      // 创建一个单元格,设置其内的数据格式为字符串,并填充内容,其余单元格类同

      XSSFCell newNameCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_STRING);

      newNameCell.setCellValue("钱七");

      XSSFCell newGenderCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_STRING);

      newGenderCell.setCellValue("女");

      XSSFCell newAgeCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);

      newAgeCell.setCellValue(50);

      XSSFCell newWeightCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);

      newWeightCell.setCellValue(68);

      XSSFCell newSalaryCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);

      newSalaryCell.setCellValue(6000);

    2. 步骤五 : 将最新的 Excel 内容写回到原始 Excel 文件中

      // 将最新的 Excel 数据写回到原始 Excel 文件(就是D盘那个 Excel 文件)中       

      // 首先要创建一个原始Excel文件的输出流对象!

      FileOutputStream excelFileOutPutStream = new FileOutputStream("D:/employees.xlsx");

      // 将最新的 Excel 文件写入到文件输出流中,更新文件信息!

      workbook.write(excelFileOutPutStream);

       // 执行 flush 操作, 将缓存区内的信息更新到文件上

      excelFileOutPutStream.flush();

      // 使用后,及时关闭这个输出流对象, 好习惯,再强调一遍!

      excelFileOutPutStream.close();



你可能感兴趣的:(POI 读取并修改 Excel(二))