gpt4 book ai didi

java - 使用 getPhysicalNumberOfCells 方法将 css 应用于 POI 生成的单元格?

转载 作者:行者123 更新时间:2023-12-01 13:41:16 29 4
gpt4 key购买 nike

我正在使用扩展器 primefaces 开发 JSF,碰巧我是 moficando excel 我生成了默认报告,我只需要在生成的单元格中详细应用样式,我只能设置标题的样式。

private void columnsCustomers() {
this.setColumnCustomer(new ArrayList<ValidColumnKey>());
this.getColumnCustomer().add(new ValidColumnKey(1, "Codigo", "code"));
this.getColumnCustomer().add(new ValidColumnKey(2, "Nombre", "name"));
this.getColumnCustomer().add(new ValidColumnKey(3, "Nombre Comercial", "comercialName"));
this.getColumnCustomer().add(new ValidColumnKey(4, "Estado", "isActive"));
}

public void postProcessXLS(Object document) {
HSSFWorkbook wb = (HSSFWorkbook) document;
HSSFSheet sheet = wb.getSheetAt(0);
//HSSFSheet sheet = wb.createSheet(getCustomer().getName());
HSSFRow header = sheet.getRow(0);

HSSFRow rowUser0 = sheet.createRow((short) 0);

HSSFCellStyle styleHeader = (HSSFCellStyle) wb.createCellStyle();
styleHeader.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont fontHeader = (HSSFFont) wb.createFont();
fontHeader.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
fontHeader.setColor(HSSFColor.WHITE.index);
styleHeader.setFillForegroundColor(HSSFColor.DARK_BLUE.index);
styleHeader.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
styleHeader.setFont(fontHeader);
styleHeader.setBorderBottom((short) 1);
styleHeader.setBorderLeft((short) 1);
styleHeader.setBorderRight((short) 1);
styleHeader.setBorderTop((short) 1);

HSSFCell indice = rowUser0.createCell((short) 0);
indice.setCellValue("N°");
indice.setCellStyle(styleHeader);

int nro = 1;
for(ValidColumnKey column : this.getColumnCustomer()){
HSSFCell hnro = rowUser0.createCell((short) nro);
hnro.setCellValue(column.getDescripcion());
hnro.setCellStyle(styleHeader);
nro++;
}

HSSFCellStyle styleCellWhite = (HSSFCellStyle) wb.createCellStyle();
HSSFFont fontCellWhite = (HSSFFont) wb.createFont();
fontCellWhite.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
styleCellWhite.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
styleCellWhite.setBorderBottom((short) 1);
styleCellWhite.setBorderLeft((short) 1);
styleCellWhite.setBorderRight((short) 1);
styleCellWhite.setBorderTop((short) 1);

for(int i=0; i < header.getPhysicalNumberOfCells();i++) {
HSSFCell cell = header.getCell(i);
cell.setCellStyle(styleHeader);
}
}

图片:http://s2.subirimagenes.com/otros/previo/thump_8748813excelpoi.jpg

正如您在图像中看到的那样,只是缺少在边缘的详细 Excel 中应用的样式,我应用了该样式但显然不起作用,该方法将 header.getPhysicalNumberOfCells

有人可以指导我吗,他们非常感激。

最佳答案

对于您的工作表问题:工作簿和工作表已由 PF 在这一步创建。您可能只想简单地(重新)命名该工作表:

wb.setSheetName(0, getCustomer().getName());

对于您的其他问题(目前还不清楚),我想您想使用您的样式 styleCellWhite 格式化数据值。这是一种方法:

//iterates lines, then iterate each column giving style to each cell
for (int r=1; r<sheet.getLastRowNum(); r++) {
HSSFRow row = sheet.getRow(r);
for (int i=0; i<row.getPhysicalNumberOfCells(); i++) {
row.getCell(i).setCellStyle(styleCellWhite);
}
}

另一句话

您正处于后处理方法中。这意味着文档、工作表和单元格已经创建并填充。您不应该创建行或单元格,而只能在此处修改它们(获取它们并给出样式、固定值或标题。)。

关于java - 使用 getPhysicalNumberOfCells 方法将 css 应用于 POI 生成的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20752601/

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