gpt4 book ai didi

excel - Primefaces dataExporter 到 xls float 变成电子表格单元格中的文本

转载 作者:行者123 更新时间:2023-12-02 16:35:01 24 4
gpt4 key购买 nike

环境:

  • jsf 2.2
  • primefaces 6.1
  • 飞翔10

我正在尝试使用 primefaces 的 dataExporter 将数据表导出到 Excel,但我首先得到

<p:commandButton id="btnExpExcel"
alt="#{msgs.inv_exportinvoices}"
ajax="false">
<p:dataExporter type="xls" target="lstFactures"
fileName="invoices"/>
</p:commandButton>
<p:dataTable id="lstFactures" var="inv"
...

选项 1 我进入 xls pex。 83.2 但我们使用 , 作为小数而不是 。

...
<p:column headerText="#{msgs.total}">
<h:outputText value="#{inv.total}">
<f:convertNumber locale="#{localeBean.locale}"/>
</h:outputText>
</p:column>
...

选项 2 我进入 xls pex。 83,2 但 Excel 将其处理为文本而不是数字

...
<p:column headerText="#{msgs.total}">
<h:outputText value="#{inv.total}" />
</p:column>
...

**选项3 ** 与

public void postProcessXLS(对象文档) { HSSFWorkbook wb = (HSSFWorkbook) 文档; HSSFSheet 表 = wb.getSheetAt(0); HSSFRow header ;

    HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.GREEN.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
int ind = 0;
for (int row = 0; row < invoices.size() + 1; row++) {
header = sheet.getRow(row);
for (int col = 0; col < header.getPhysicalNumberOfCells(); col++) {
...
}
if (col == 5) {
HSSFCell cell = header.getCell(col);
//Total is a float
cell.setCellValue(invoices.get(ind).getTotal());
ind++;
}
}
}
}
}

我也尝试了exportFuction="#{inv.total}",但出现了某种错误exportFunction="#{inv.total}":找不到方法...

我在 xls 中得到的内容如下

enter image description here

最佳答案

p:dataTable 中的所有字段均导出为文本。如果您想将值转换为不同的格式,则必须实现 postProcessor 方法。

示例:
页面.xhtml

<p:dataExporter type="xls" target="lstFactures" fileName="invoices" postProcessor="#{bean.ppMethod}" />

Bean 类

public void ppMethod(Object document) {   
Workbook workbook = (Workbook) document;
...
CellStyle totalCellStyle = workbook.createCellStyle();

totalCellStyle.setDataFormat(workbook.createDataFormat().getFormat("#,##0.00"));

Cell currentCell = workbook.getSheetAt(0).getRow(0).getCell(0);


currentCell.setCellValue(Double.parseDouble(currentCell.getStringCellValue()));
currentCell.setCellStyle(defaultCellStyle);
...
}

关于excel - Primefaces dataExporter 到 xls float 变成电子表格单元格中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192927/

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