【发布时间】:2016-06-15 20:46:42
【问题描述】:
我目前正在从事一个项目,该项目需要我将我的一些庞大的输出写入 Excel 电子表格,因此我决定使用 Apache POI 加快该过程。但是,我发现超过 10 行条目的任何内容都会导致将新行放置在开头。即在第 9 行之后,第 10 行将转到电子表格的顶部并将其他所有内容向下推。即使使用来自 TutorialsPoint 的示例文件也会发生这种情况,我将在下面包含该示例文件。
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 Writesheet
{
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" });
//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" );
}
}
上面是我提到的示例代码。如果您添加更多行(总行数超过 10 行),电子表格将出现故障。或者您可以使用 for 循环。
for(int i = 6; i < 20; i++){
String num = Integer.toString(i);
empinfo.put(num, new Object[] {"test", num});
}
请原谅,我对编程艺术一窍不通。如果有人可以提供帮助,我将不胜感激!
【问题讨论】:
标签: java excel apache apache-poi rows