[英]How to write a list of data in excel in column wise using Java?
我在ArrayList
有一個數據列表,其中包含標題以及與之關聯的值。 像下面,
Fruits
Apple
Orange
******
Vegetables
Beans
Carrot
Brinjal
Cucumber
******
Colors
Orange
Blue
Red
Green
Yellow
Now, I want to write the values in `excel` with each heading and the associated values in column-wise. Like below,
Fruits Vegetable Colors
Apple Beans Orange
Orange Carrot Blue
Brinjal Red
Cucumber Green
Yellow
我正在用 java 編寫代碼並使用apache.poi.xssf.usermodel
庫來處理excel
操作。 我在這里面臨的問題是,當我編寫第二個標題和相關值時,第一個標題及其值由於Row
創建代碼而被清除
XSSFRow row = outputSheet.createRow(rowNumValue);
誰能幫我完成這件事?
您需要做的是第一次使用createRow()
來...創建行,並使用getRow()
進行所有后續訪問。 這樣,您將獲得工作表對象中已有的行,而不是創建一個新行。 如果該行不存在,則getRow()
返回 null,因此您可以執行以下等效操作:
XSSFRow row = outputSheet.getRow(rowNumValue) ? outputSheet.getRow(rowNumValue) : outputSheet.createRow(rowNumValue);
可以立即對單個列表進行操作,但使用合理的數據結構更容易。 由於每一列可以有不同的行數,所以制作一個列列表,每列一個行列表。
List<List<String>> makeColumns(List<String> linearList) {
List<List<String>> columns = new ArrayList<>();
int column = 0;
for (String s : linearList) {
if (s.startsWith("***")) {
++column;
} else {
while (column >= columns.size()) {
columns.add(new ArrayList<>());
}
columns.get(column).add(s);
}
}
}
現在可以遍歷行以填充工作表。
List<List<String>> columns = makeColumns(...);
int rows = columns.stream().mapToInt(List::size).max().orElse(0);
for (int rowi = 0; rowi < rows; ++rowi) {
XSSFRow row = outputSheet.createRow(rowi + 1);
for (int coli = 0; coli < columns.size(); ++coli) {
if (rowi < columns.get(coli).size()) {
String value = columns.get(coli).get(rowi);
row.createCell(coli);
...
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.