POI对Excel单元格内容修改

  // XLSX版本
 const in= new Packages.java.io.FileInputStream("C:\\LJT\\test.xlsx");
 const wb= Packages.org.apache.poi.xssf.usermodel.XSSFWorkbook("in")

 //xls版本

  const in= new Packages.java.io.FileOutputStream("C:\\LJT\\test.xls");
  const wb= new Packages.org.apache.poi.hssf.usermodel.HSSFWorkbook("in")

  //打开之后对某个单元格进行赋值修改

   //获取表格一的工作表
  let sheet = wb.getSheet("表格一");

 //获取表格一中 第3行(根据索引)
  let row = sheet.getRow(2);

  //获取表格一中 第3行的第五列(根据索引)
   let cell = row.getCell(4);
 //赋值
 cell.setCellValue("修改成功");

 此时表格一第3行第5列 就变成了修改成功

  //在保存一下
 const out= new Packages.java.io.FileOutputStream("C:\\LJT\\test.xlsx");
  
            doc.write(out)
   
            out.close();
 
  
 

此时如果你要修改的单元格为空或者这一行都是空会报错

果如是97和07两个Excel版本只需要吧上面的wb修改一下 路径后缀修改一下

Java中的流我这个关闭的步骤省略了 自己关闭一下就行了

//如果是空需要插入新单元格在赋值


  //打开之后对某个单元格进行赋值修改

   //获取表格一的工作表
  let sheet = wb.getSheet("表格一");

 //获取表格一中 第3行(根据索引)
  let row = sheet.getRow(2);

      //如果行是空就创建新行
   if (row == null) {
       row = sheet.createRow(2);
                    }


  //获取表格一中 第3行的第五列(根据索引)
   let cell = row.getCell(4);

  if(cell==null){
   //如果单元格是空就创建新单元格在修改
   let newCell = row.createCell(4);
       newCell.setCellValue("修改成功");
}
 //赋值
 cell.setCellValue("修改成功");

 //在保存一下
 const out= new Packages.java.io.FileOutputStream("C:\\LJT\\test.xlsx");
  
            doc.write(out)
   
            out.close();
 

 
 

此时对单元格内容修改就没什么问题了

你可能感兴趣的:(java,java)