【问题标题】:Set two styles for a single cell为单个单元格设置两种样式
【发布时间】:2015-04-23 18:22:57
【问题描述】:

如何为单个单元格设置两种不同的样式?目前我在

中显示一个单元格值
  1. 粗体
  2. 货币格式如:2,300。

预期结果:2,300

但是最后一种样式会覆盖前面的样式,而我只能使用后面的属性。

XSSFCellStyle my_style = (XSSFCellStyle) wb.createCellStyle();
    XSSFFont my_font=(XSSFFont) wb.createFont();
    my_font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
    my_style.setFont(my_font);
XSSFCellStyle currencyFormat = (XSSFCellStyle) wb.createCellStyle();
    XSSFDataFormat df =(XSSFDataFormat) wb.createDataFormat(); 
    currencyFormat.setDataFormat(df.getFormat("#,##0"));

在这里设置数据

                rowSavingsTotal.createCell(a).setCellValue(2300); 
                rowSavingsTotal.getCell(a).setCellStyle(my_style);
                rowSavingsTotal.getCell(a).setCellStyle(currencyFormat);

【问题讨论】:

    标签: java excel apache-poi


    【解决方案1】:

    您只能在单元格上放置一种样式。只需合并它们两个:

    XSSFCellStyle my_style = (XSSFCellStyle) wb.createCellStyle();
    XSSFFont my_font=(XSSFFont) wb.createFont();
    my_font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
    my_style.setFont(my_font);
    XSSFDataFormat df =(XSSFDataFormat) wb.createDataFormat(); 
    my_style.setDataFormat(df.getFormat("#,##0"));
    

    rowSavingsTotal.createCell(a).setCellValue(2300); 
    rowSavingsTotal.getCell(a).setCellStyle(my_style);
    

    【讨论】:

    • 感谢您的快速回复。有效!! .但在某些情况下,我只想以货币格式而不是粗体显示值。
    • 您可以创建 CurrencyFormat 样式,并在特殊情况下使用 cloneStyleFrom(CellStyle source) 方法。然后在克隆样式上你可以申请BOLD。
    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多