Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 使用Apache POI在XLSM文件之间复制单元格值_Java_Excel_Apache Poi_Xssf - Fatal编程技术网

Java 使用Apache POI在XLSM文件之间复制单元格值

Java 使用Apache POI在XLSM文件之间复制单元格值,java,excel,apache-poi,xssf,Java,Excel,Apache Poi,Xssf,我有两个XLSM文件,并尝试使用apachepoi在Java代码中的文件之间复制单元格值。 第一个文件初始化如下: File file = new File(GlobalVariables.XLSM); FileInputStream inputStream = new FileInputStream(file); XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(inputStream); XSSFSheet sheet =

我有两个
XLSM
文件,并尝试使用
apachepoi
在Java代码中的文件之间复制单元格值。 第一个文件初始化如下:

File file = new File(GlobalVariables.XLSM);
FileInputStream inputStream = new FileInputStream(file);
XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.getRow(recordcount+4);
Cell cell;
第二个文件:

File prevfile = new File(PrevResXLS);
FileInputStream prevInputStream = new FileInputStream(prevfile);
XSSFWorkbook prevworkbook = XSSFWorkbookFactory.createWorkbook(prevInputStream);
XSSFSheet prevsheet = prevworkbook.getSheetAt(0);
XSSFRow prevrow = prevsheet.getRow(0);
Cell prevCell;
之后,我尝试按预定义的条件复制单元格。单元格应该复制到与原始文件不同的列中,因此我在代码中使用减法

        for (Row r : prevsheet) {
            if (r.getRowNum()==0) continue;
            if(r.getCell(1).toString().equals(trans_filename)){
                prevCell = prevrow.getCell(21);
                prevCell.setCellValue(r.getCell(21-13).toString());
                prevCell = prevrow.getCell(22);
                prevCell.setCellValue(r.getCell(22-13).toString());
                prevCell = prevrow.getCell(23);
                prevCell.setCellValue(r.getCell(23-13).toString());
                prevCell = prevrow.getCell(24);
                prevCell.setCellValue(r.getCell(24-13).toString());
                prevCell = prevrow.getCell(25);
                prevCell.setCellValue(r.getCell(25-13).toString());
                prevCell = prevrow.getCell(26);
                prevCell.setCellValue(r.getCell(26-13).toString());
                prevCell = prevrow.getCell(27);
                prevCell.setCellValue(r.getCell(27-13).toString());
                prevCell = prevrow.getCell(28);
                prevCell.setCellValue(r.getCell(28-13).toString());
                prevCell = prevrow.getCell(29);
                prevCell.setCellValue(r.getCell(29-13).toString());
                prevCell = prevrow.getCell(30);
                prevCell.setCellValue(r.getCell(30-13).toString());
                prevCell = prevrow.getCell(31);
                prevCell.setCellValue(r.getCell(31-13).toString());
                prevCell = prevrow.getCell(32);
                prevCell.setCellValue(r.getCell(32-13).toString());
                prevCell = prevrow.getCell(33);
                prevCell.setCellValue(r.getCell(33-13).toString());
            }
        }

我得到了
java.lang.NullPointerException
,但是文件、工作表和单元格都存在。

哪一行给出了NPE?这对应于什么对象?@Gagravarr:在这一行:
prevCell.setCellValue(r.getCell(27-13).toString())
,它是单元格接口。
prevrow.getCell
以及
r.getCell
可能返回null。所以空检查总是必要的。