Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在excel文件中使用Apache POI写入连续单元格值_Java_Apache_Apache Poi - Fatal编程技术网

Java 无法在excel文件中使用Apache POI写入连续单元格值

Java 无法在excel文件中使用Apache POI写入连续单元格值,java,apache,apache-poi,Java,Apache,Apache Poi,我不知道为什么我不能用setCellValue()写2个单元格值,它只更新x1单元格中的1个值,而x2单元格中不更新。 我有一个excel文件,我想用arraylist ListToHaithang、tt.getNoiBo()和tt.getNgoaiMang()中的数据更新该文件的值。getNgoaiMang()是一个字符串,在记录日志时不为null 代码如下,谢谢 public void writeFile(ArrayList<LLThoaiNoiHat> llList) {

我不知道为什么我不能用setCellValue()写2个单元格值,它只更新x1单元格中的1个值,而x2单元格中不更新。 我有一个excel文件,我想用arraylist ListToHaithang、tt.getNoiBo()和tt.getNgoaiMang()中的数据更新该文件的值。getNgoaiMang()是一个字符串,在记录日志时不为null

代码如下,谢谢

public void writeFile(ArrayList<LLThoaiNoiHat> llList) {
    FileInputStream fis = null;
    try {
        DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        String date1 = dateFormat.format(new Date()).toString();
        File tongHop = new File("Thongke_LL_NOIHAT_VTT_" + date1 + ".xlsx");
        copyFileUsingApacheCommonsIO(new File("Mau_Thongke_LL_NOIHAT_VTT.xlsx"), tongHop);  //copy sample file before edit data
        fis = new FileInputStream(tongHop);
        BufferedInputStream bis = new BufferedInputStream(fis);
        XSSFWorkbook  workbook = new XSSFWorkbook(fis);
        Sheet sheet = workbook.getSheetAt(0);
        fis.close();
        int rowNum = 9;
        Row row;

        ArrayList<LLThoaiThang> listThoaiThang;
        for (LLThoaiNoiHat tnh : llList) {
            row = sheet.getRow(rowNum++);
            int colNum = 2;
            listThoaiThang =tnh.getListThoaiThang();
            for (LLThoaiThang tt :listThoaiThang ) {
                int aa = tt.getThang() / 2+3;
                Cell x1 = row.getCell(aa);
                x1.setCellValue(tt.getNoiBo()); //only first cell ok
                Cell x2 = row.getCell(aa+1);
                x2.setCellValue(tt.getNgoaiMang());//this cell cannot change value and all cell after cannot change value
            }

        }

        FileOutputStream outFile = new FileOutputStream(tongHop);
        workbook.write(outFile);
        outFile.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
public void writeFile(ArrayList llList){
FileInputStream fis=null;
试一试{
DateFormat DateFormat=新的SimpleDateFormat(“yyyyMMdd”);
字符串date1=dateFormat.format(新日期()).toString();
File tongHop=新文件(“Thongke_LL_NOIHAT_VTT_”+date1+”.xlsx);
copyFileUsingApacheCommonsIO(新文件(“Mau_Thongke_LL_NOIHAT_VTT.xlsx”),tongHop);//在编辑数据之前复制示例文件
fis=新文件输入流(tongHop);
BufferedInputStream bis=新的BufferedInputStream(fis);
XSSF工作簿=新XSSF工作簿(fis);
工作表=工作簿。getSheetAt(0);
fis.close();
int rowNum=9;
行行;
ArrayList ListToAithang;
对于(LLThoaiNoiHat tnh:llList){
row=sheet.getRow(rowNum++);
int colNum=2;
listThoaiThang=tnh.getListThoaiThang();
对于(LLThoaiThang tt:LISTTHOAITThang){
int aa=tt.gethang()/2+3;
单元格x1=行getCell(aa);
x1.setCellValue(tt.getNoiBo());//仅第一个单元格正常
单元格x2=行getCell(aa+1);
x2.setCellValue(tt.getNgoaiMang());//此单元格不能更改值,后面的所有单元格都不能更改值
}
}
FileOutputStream outFile=新FileOutputStream(tongHop);
工作簿。写入(输出文件);
outFile.close();
}捕获(例外情况除外){
例如printStackTrace();
}
}

我发现这里的问题是,如果您将数字值设置为字符串,它将不会在单元格后更新,我认为这是apache POI的问题,所以答案是:

for (LLThoaiThang tt :listThoaiThang ) {
                int aa = tt.getThang() / 2+3;
                Cell x1 = row.getCell(aa);
                if(!tt.getNoiBo().isEmpty())
                    x1.setCellValue(Double.parseDouble(tt.getNoiBo())); //only this cell ok
                Cell x2 = row.getCell(aa+1);
                if(!tt.getNgoaiMang().isEmpty())
                    x2.setCellValue(Double.parseDouble(tt.getNgoaiMang()));;
}

欢迎来到堆栈溢出!寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。