有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

excel JAVA使用ApachePOI创建xlsx,第9行之后的所有行都将插入回第2行

我将在此网站上学习Apache POI–电子表格教程: https://www.tutorialspoint.com/apache_poi/apache_poi_spreadsheets.htm

一切正常,但当我尝试添加10行以上时,第9行之后的所有行都将从第2行重新插入。我是JAVA新手,循环迭代数据或其他东西有什么问题吗?请帮忙

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

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

为了让它正常工作


共 (1) 个答案

  1. # 1 楼答案

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