gpt4 book ai didi

Java - Apache POI - 在这种模式下不可能用循环填充行和单元格? (Excel)

转载 作者:行者123 更新时间:2023-12-02 06:56:33 25 4
gpt4 key购买 nike

最近我打开了这个主题:

Java - Apache POI - Trouble filling rows and cells with loops (Excel)

我开发了另一个结构,希望这能解决问题,问题就变得更加清晰了。

考虑到这种模式:

hashkey1 | hashkey2 | hashkey3 | hashkey4
value1-1 | value2-1 | value3-1 | value4-1
value1-2 | value2-2 | value3-2 | value4-2
value1-3 | value2-3 | value3-3 | value4-3
value1-4 | value2-4 | value3-4 | value4-4
value1-5 | value2-5 | value3-5 | value4-5

这是新代码:

Row keyRow = worksheet.createRow(4);
Row valueRow = null;
int keyCell = -2;
int firstIndex = 0;
int secondIndex = -2;
int row = 5;
ArrayList<String> keyArray = new ArrayList();
ArrayList<String> innerValueArray;
ArrayList<ArrayList<String>> outerValueArray = new ArrayList<ArrayList<String>>();
for (Map.Entry<String, ArrayList<String>> e : matrix.entrySet()) {
keyArray.add(e.getKey());
innerValueArray = new ArrayList();
for (String s : e.getValue()) {
innerValueArray.add(s);
}
outerValueArray.add(innerValueArray);
}
for (String s : keyArray) {
keyCell += 2;
keyRow.createCell(keyCell).setCellValue(keyArray.get(firstIndex++));
}
for (ArrayList<String> aS : outerValueArray) {
secondIndex += 2;
for (String s : aS) {
if ((row - 5) < outerValueArray.size()) {
row++;
}
valueRow = worksheet.createRow(row);
valueRow.createCell(secondIndex).setCellValue(s);
}
}

在另一个主题中,有问题的变量是“keyCell”,而在这个主题中,它是第二个索引。将值放在正确位置的唯一方法是通过用于键的同一变量,但这使得只能填充一列,从而删除其他列的内容。该问题与其他主题完全相同。所有替代方案都会导致这种情况,并且我希望值位于同一行中。

问题是:用这种模式填充和Excel表格是不可能的吗?因为肯定不可能更新内部循环中的变量并保持所需的模式。我怎样才能用循环构建这个模式?

OBS:在我的软件中它会增加 2,这没有什么区别。单独执行此操作会出现相同的问题(单元格被删除)。

非常感谢你!

最佳答案

我不确定我是否真的理解你的问题,但请检查一下。它使用您描述的模式创建一个工作表:

import java.io.*;
import java.util.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

public class PoiPattern {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) throws Exception {
Map<String, ArrayList<String>> matrix = new HashMap<String, ArrayList<String>>();
for (int i = 1; i <= 5; i++) {
matrix.put("hashkey"+i, new ArrayList(Arrays.asList(new String[]{"value"+i+"-1", "value"+i+"-2", "value"+i+"-3", "value"+i+"-4", "value"+i+"-5"})));
}

Workbook wb = new HSSFWorkbook();
Sheet worksheet = wb.createSheet();

Row keyRow = worksheet.createRow(0);
int col = 0;
for (String key : matrix.keySet()) {
keyRow.createCell(col).setCellValue(key);
ArrayList<String> values = matrix.get(key);
for (int i = 0; i < values.size(); i++) {
Row r = worksheet.getRow(i+1);
if (r == null) { r = worksheet.createRow(i+1); }
r.createCell(col).setCellValue(values.get(i));
}
col++;
}
FileOutputStream fos = new FileOutputStream(new File("ExampleFill.xls"));
wb.write(fos);
}
}

关于Java - Apache POI - 在这种模式下不可能用循环填充行和单元格? (Excel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256996/

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