gpt4 book ai didi

java - 使用 Java POI 使用 LinkedHashmap 编写 Excel 表

转载 作者:行者123 更新时间:2023-12-02 03:05:00 25 4
gpt4 key购买 nike

我快要解决我的问题了,但只是陷入了小问题。我正在尝试从 LinkedHashmap 打印 Excel 文件。我使用 Java 和 POI 库来达到我的目的。

我正在从 LinkedHashmap 中的另一个 Excel 文件中提取一些数据,并将这些数据打印到新的 Excel 文件中。

LinkedHashmap中存储的数据很大,按以下方式列出:

    Keys | Values
-----------------------------------
Key1 : value1, value1, value1
Key2 : value2, value2, value2
key3 : value3, value3, value3

我想要什么:

Excel 文件中的输出应按以下格式显示:

Excel_file_out_deserved.xslx:

+
key1 | value1
key1 | value1
key1 | value1
| // (if possible, empty cell space here will look good)
key2 | value2
key2 | value2
key2 | value2
| // (if possible, empty cell space here will look good)
key3 | value3
key3 | value3
key3 | value3

我得到了什么:

My_excel_file_out.xslx:

| value1 // (why my first column is empty?!, it should print keys there)
| value1
| value1
| value2
| value2
| value2
| value3
| value3
| value3

我尝试过的:

FileOutputStream out = new FileOutputStream(new File("my_excel.xlsx"));

XSSFWorkbook newWorkbook = new XSSFWorkbook();
XSSFSheet sheet = newWorkbook.createSheet("print_vertical");
int row = 0;

// loop through all the keys
for(String key : linkMap.keySet()){

List<String> values = linkMap.get(key);

for (String value:values){

// print keys in 1st column
sheet.createRow(row).createCell(0).setCellValue(key); // why this doesn't work? :-/
// print values in 3rd column
sheet.createRow(row).createCell(2).setCellValue(value); // this works fine
row++;
}

}

newWorkbook.write(out);
out.close();

奇怪的是,当我删除内部 for 循环值而不省略 sheet.createRow(row).createCell(0).setCellValue(key); 行时,外部循环将正确打印键值在第一列行中。我不知道我在哪里犯了错误。谢谢。

最佳答案

您通过调用创建行两次

sheet.createRow(row)

您需要将行存储在变量中并在那里调用createCell(x)

for (String value:values){
Row newRow = sheet.creatRow(row);
newRow.createCell(0).setCellValue(key);
newRow.createCell(2).setCellValue(value);
row++;
}

问题是:

sheet.createRow(row).createCell(0).setCellValue(key);//在索引“row”处创建新行sheet.createRow(row).createCell(2).setCellValue(value);//在同一行索引处创建新行

因此您的第一行将被覆盖。

关于java - 使用 Java POI 使用 LinkedHashmap 编写 Excel 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41876941/

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