gpt4 book ai didi

java - 使用 Apache POI 在循环时将数据打印到 Excel 单元格中

转载 作者:行者123 更新时间:2023-11-30 03:01:49 25 4
gpt4 key购买 nike

我有Java程序,我希望将数据输出到Excel电子表格中。我发现我可以使用 Apache POI 来做到这一点。我尝试使用发现的示例 here一切似乎都正常。但是,我在示例程序中的每次迭代(循环)中在 Excel 中打印新行时遇到问题。

这是我的程序:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

public class Excel {

public static void main(String[] args) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");

Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"Emp No.", "Name", "Salary"});

for (int i=0;i<5;i++){

data.put("2", new Object[] {"5", "Jane", "300"});

}

Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object [] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if(obj instanceof Date)
cell.setCellValue((Date)obj);
else if(obj instanceof Boolean)
cell.setCellValue((Boolean)obj);
else if(obj instanceof String)
cell.setCellValue((String)obj);
else if(obj instanceof Double)
cell.setCellValue((Double)obj);
}
}

try {
FileOutputStream out =
new FileOutputStream(new File("new.xls"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

据说,我想要这样的输出:

EmpNo Name Salary
5 Jane 300
5 Jane 300
5 Jane 300
5 Jane 300
5 Jane 300

但它总是只打印 Excel 工作表中的第一行。任何熟悉使用 Apache POI 的人都可以帮助我吗?谢谢!

最佳答案

此处data.put("2", new Object[] {"5", "Jane", "300"});“2” -> 表示行数。所以你总是替换行号2所以尝试一下

for (int i=2;i<7;i++){
data.put(i + "", new Object[] {"5", "Jane", "300"});
}

这意味着 i 将是动态值。你将有 5 行:D

关于java - 使用 Apache POI 在循环时将数据打印到 Excel 单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com