gpt4 book ai didi

java - 我想在特定列中排列整个单元格,而不是单个单元格

转载 作者:行者123 更新时间:2023-11-30 08:06:18 25 4
gpt4 key购买 nike

我使用了 POI 并试图安排一整列。但只有我找到的方法是安排单个单元格。虽然我找到了 sheet.setDefaultColumnStyle() 并尝试使用这个函数,但它根本不起作用。你能告诉我使用 setDefaultColumnStyle() 或其他方式的方法吗?

下面的代码是我安排单个单元格的代码。

    xlsxFile = new File("data.xlsx");
wb = new XSSFWorkbook();

cellStyle = wb.createCellStyle();
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
row = sheet1.createRow(0);
cell = row.createCell(1);
cell.setCellValue("name");
cell.setCellStyle(cellStyle);

我的英语水平有点笨拙。感谢您阅读。如果有任何奇怪的地方,请告诉我。

最佳答案

这似乎是 Apache POI 中的错误。有两个问题:

首先:使用Sheet.setDefaultColumnStyle 和定义对齐的样式后,POI 不会在xf 中设置applyAlignment="true" styles.xml 中元素的标签。但它应该如此,因为只有这样才能使 Excel 将该样式的对齐方式应用于新单元格。

其次:POI 本身不会将此样式应用于该列中的新单元格。应该在Sheet1.xml对应的c标签中设置s="1",其中1为样式编号。

所以我们必须解决:

import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

class CenteredColumn {

public static void main(String[] args) {
try {

Workbook wb = new XSSFWorkbook();

Sheet sheet = wb.createSheet("Sheet1");

CellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);

sheet.setDefaultColumnStyle(1, cellStyle);

//Workaround 1: We set setApplyAlignment(true) into the `xf` element's tag in styles.xml.
//This causes Excel applying alignments from this style to new cells in that column.
for (int i = 0; i < ((XSSFWorkbook)wb).getStylesSource().getNumCellStyles(); i++) {
if (((XSSFWorkbook)wb).getStylesSource().getStyleAt(i).equals(cellStyle)) {
((XSSFWorkbook)wb).getStylesSource().getCellXfAt(i).setApplyAlignment(true);
}
}

Row row = sheet.getRow(0);
if (row == null) row = sheet.createRow(0);

Cell cell = row.getCell(1);
if (cell == null) cell = row.createCell(1);
cell.setCellValue("name");
//Workaround 2: We set the cellStyle to the new cell because POI will not do this itself.
cell.setCellStyle(cellStyle);

FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
wb.write(fileOut);

} catch (IOException ioex) {
}
}
}

关于java - 我想在特定列中排列整个单元格,而不是单个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463072/

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