Java 向上移动单元格-Apache POI获取t

Java 向上移动单元格-Apache POI获取t,java,excel,apache-poi,Java,Excel,Apache Poi,我正在使用ApachePOIXSSF从JTable获取列和行,并创建一个excel文件。我试图根据名为“Name”的列的值来分隔表,每个名称都有一个不同的表 我的问题是,当我试图将它们分开时,其他工作表会在顶部生成空白单元格,空白单元格的数量取决于它们上面的记录数量。这是我的密码: //Create a blank sheet XSSFSheet sheet_Mark = workbook.createSheet("Mark"); XSSFSheet sheet_John =

我正在使用ApachePOIXSSF从
JTable
获取列和行,并创建一个excel文件。我试图根据名为“Name”的列的值来分隔表,每个名称都有一个不同的表

我的问题是,当我试图将它们分开时,其他工作表会在顶部生成空白单元格,空白单元格的数量取决于它们上面的记录数量。这是我的密码:

//Create a blank sheet
XSSFSheet sheet_Mark = workbook.createSheet("Mark");
XSSFSheet sheet_John = workbook.createSheet("John");

for(int i = 0; i < jTable1.getRowCount(); i++){
    Integer id_Values = (int) jTable1.getValueAt(i,0);
    String name_Values = (String) jTable1.getValueAt(i, 1);
    Integer age_Values = (int) jTable1.getValueAt(i,2);
    if(name_Values.equals("Mark")){
        XSSFRow row = sheet_Mark.createRow(i);
        row.createCell(0).setCellValue(id_Values);
        row.createCell(1).setCellValue(name_Values);
        row.createCell(2).setCellValue(age_Values);
    }
    else if(name_Values.equals("John")){
        XSSFRow row = sheet_John.createRow(i);
        row.createCell(0).setCellValue(id_Values);
        row.createCell(1).setCellValue(name_Values);
        row.createCell(2).setCellValue(age_Values);
    }
}
我对Java很陌生,所以请容忍我。如果有任何答案或解决方案,我将不胜感激

编辑:我知道这与这一行有关:

XSSFRow row = sheet_Mark.createRow(i);

也许我可以得到标记上方的行数,然后将其减去
I
。我确实尝试过搜索解决方案,但找不到任何解决方案。

Excel工作簿中每个工作表的行索引独立于
JTable
中的行索引。您需要为每个工作表维护一个单独的索引

//创建空白工作表
XSSFSheet sheet_Mark=workbook.createSheet(“Mark”);
XSSFSheet sheet_John=workbook.createSheet(“John”);
int-markRow=0;
int-johnRow=0;
对于(int i=0;i

markRow
图纸标记的索引。无论何时向该工作表中添加一行,都会增加
markRow
。类似地,对于
johnRow

已解决!我终于明白了。非常感谢你