我正在关注此站点上的Apache POI - Spreadsheets教程: 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
无论如何要让它正常工作?
答案 0 :(得分:2)
Treemap对最终结果与预期结果不同的关键字进行排序。尝试使用linkhashmap保存插入顺序。