JAVA使用apache poi创buildxlsx,第9行之后的所有行将被插回到第2行

我正在关注这个站点上的Apache POI – Spreadsheets教程: https : //www.tutorialspoint.com/apache_poi/apache_poi_spreadsheets.htm

一切工作正常,但是当我尝试添加超过10行时,第9行之后的所有行将从第二行插回。 我是新的JAVA,是否有任何错误的循环迭代数据或其他东西? 请帮忙!

我使用了教程中的全部代码,但添加了更多行来创build更多行:

package testing; import java.io.File; import java.io.FileOutputStream; import java.util.Map; import java.util.Set; import java.util.TreeMap; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Testing { /** * @param args the command line arguments * @throws java.lang.Exception */ public static void main(String[] args) throws Exception { //Create blank workbook XSSFWorkbook workbook = new XSSFWorkbook(); //Create a blank sheet XSSFSheet spreadsheet = workbook.createSheet( " Employee Info "); //Create row object XSSFRow row; //This data needs to be written (Object[]) Map < String, Object[] > empinfo = new TreeMap < String, Object[] >(); empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" }); empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" }); empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" }); empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" }); empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" }); empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" }); empinfo.put( "7", new Object[] { "tp06", "Krishna", "Technical Writer" }); empinfo.put( "8", new Object[] { "tp07", "Krishna", "Technical Writer" }); empinfo.put( "9", new Object[] { "tp08", "Krishna", "Technical Writer" }); empinfo.put( "10", new Object[] { "tp09", "Krishna", "Technical Writer" }); empinfo.put( "11", new Object[] { "tp10", "Krishna", "Technical Writer" }); //Iterate over data and write to sheet Set < String > keyid = empinfo.keySet(); int rowid = 0; for (String key : keyid) { row = spreadsheet.createRow(rowid++); Object [] objectArr = empinfo.get(key); int cellid = 0; for (Object obj : objectArr) { Cell cell = row.createCell(cellid++); cell.setCellValue((String)obj); } } //Write the workbook in file system FileOutputStream out = new FileOutputStream( new File("Writesheet.xlsx")); workbook.write(out); out.close(); System.out.println( "Writesheet.xlsx written successfully" ); } } 

如果我运行代码,生成的* .xlsx文件将是: example.xlsx

无论如何,使其正常工作?

树形图对键进行sorting,这就是最终结果与预期不同的原因。 尝试使用保存插入顺序的linkedhashmap。