Java Excel Apache POI在执行setCellValue()时仅打印最后一个元素

Java Excel Apache POI在执行setCellValue()时仅打印最后一个元素,java,excel,eclipse,Java,Excel,Eclipse,我正在从excel中读取一些数据,并将其以列的形式写入同一文件中的另一张表中,我希望该列打印在行中。执行迭代时,createRow.setCellValue仅打印最后一个元素 包com.editDistance; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入java.util.Ite

我正在从excel中读取一些数据,并将其以列的形式写入同一文件中的另一张表中,我希望该列打印在行中。执行迭代时,createRow.setCellValue仅打印最后一个元素

包com.editDistance; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入java.util.Iterator; 导入org.apache.poi.ss.usermodel.Cell; 导入org.apache.poi.ss.usermodel.Sheet; 导入org.apache.poi.ss.usermodel.工作簿; 导入org.apache.poi.ss.util.CellRangeAddress; 导入org.apache.poi.xssf.usermodel.xssf工作簿; 公共类ReadColumnsEditDistance{ 公共静态无效主字符串[]args引发IOException{ //TODO自动生成的方法存根 File src=new FileC:\\Users\\xyz\\Desktop\\folder\\File.xlsx; FileInputStream file=newfileinputstreamsrc; 工作簿=新的XSSFWorkbookfile; Sheet sheet1=工作簿.getSheetAt0; int rows=sheet1.getPhysicalNumberOfRows; 工作簿.createSheet; Sheet sheet2=工作簿.getSheetAt1; 对于int Readingrowindex=1;Readingrowindex} 我认为这是因为您一次又一次地创建第0行,所以它会覆盖您已经创建的内容

您可能希望执行以下操作:

if(sheet2.getRow() == null){
    sheet2.createRow(0).createCell(Readingrowindex).setCellValue(ah);
}else{
    sheet2.getRow(0).createCell(Readingrowindex).setCellValue(ah);
}

是否要创建第一列和第一行中具有相同单元格的工作表,如命名表?如果是,您需要修改代码,因为您总是重写第一行,这就是为什么您只得到最后一项。这样做:

    File src = new File("C:\\Users\\xyz\\Desktop\\folder\\file.xlsx");
    FileInputStream file = new FileInputStream(src);
    Workbook workbook = new XSSFWorkbook(file);
    Sheet sheet1 = workbook.getSheetAt(0);
    int rows = sheet1.getPhysicalNumberOfRows();
    workbook.createSheet();
    Sheet sheet2 = workbook.getSheetAt(1);
    Row sheet2FirstRow = sheet2.createRow(0);
    for (int Readingrowindex = 1; Readingrowindex < rows; Readingrowindex++) {

        String ah = sheet1.getRow(Readingrowindex).getCell(1).getStringCellValue();
        sheet2.createRow(Readingrowindex).createCell(0).setCellValue(ah);
        Cell cell = sheet2FirstRow.createCell(Readingrowindex);
        cell.setCellValue((String) ah);

    }

    FileOutputStream fout = new FileOutputStream(src);
    workbook.write(fout);

我在编写代码时遇到了类似的问题,因为它只打印最后一行

以下是我的代码的解决方案:

仅打印最后一个单元格失败的解决方案,即Hello3

                    sheet.createRow(8).createCell(0).setCellValue("Hello1");
                    sheet.createRow(8).createCell(1).setCellValue("Hello2");
                    sheet.createRow(8).createCell(2).setCellValue("Hello3");
工作方案打印所有数据:

        XSSFRow row;
        row = sheet.createRow(8);
        row.createCell(0).setCellValue("India 123");
        row.createCell(1).setCellValue("India 234");
        row.createCell(2).setCellValue("India 3453");

        row = sheet.createRow(9);
        row.createCell(0).setCellValue("Test 123");
        row.createCell(1).setCellValue("Test 234");
        row.createCell(2).setCellValue("Test 3453");

它应该在循环本身中如何避免它GetRow不能为空