gpt4 book ai didi

java - Apache-poi 十进制格式仅在选择后应用

转载 作者:行者123 更新时间:2023-12-02 09:51:32 28 4
gpt4 key购买 nike

您能否对下一个案例提出建议?

我已经设置了数据格式和单元格类型(“#,###.00”,数字)(我想要千位分隔符加两个小数)

它按我的预期工作,但要格式化单元格,我需要先选择它们在选择数据之前看起来没有格式化

换句话说,我必须选择单元格以便对其进行格式化,否则它将保持没有任何格式

CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.RIGHT);
style.setLocked(locked);
style.setDataFormat(workbook.createDataFormat().getFormat("#,###.00"));

cell.setCellStyle(style);
cell.setCellType(CellType.NUMERIC);
cell.setCellValue(<big decimal value>.toString());

最佳答案

如果您需要数字单元格值,请勿将单元格值设置为字符串。如果将单元格值设置为String,则单元格类型也将为字符串。这与设置单元格值之前设置CellType无关。设置 String 单元格值时,类型始终更改为字符串。

参见API documentation其中显示 Cell.setCellType 已弃用,以及可以使用哪些 Cell.setCellValue 方法。

如果单元格应包含数字内容,则需要设置一个double单元格值。

示例:

import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.math.BigDecimal;
import java.util.Random;

class CreateExcelCellNumberFormat {

public static void main(String[] args) throws Exception {

try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {

CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("#,###.00"));

Sheet sheet = workbook.createSheet();

for (int r = 0; r < 10; r++) {
Cell cell = sheet.createRow(r).createCell(0);
cell.setCellStyle(style);

BigDecimal bigDecimal = new BigDecimal(new Random().nextDouble() * 10000000000000d);
cell.setCellValue(bigDecimal.doubleValue());

}

sheet.setColumnWidth(0, 25 * 256);

workbook.write(fileout);
}
}
}

关于java - Apache-poi 十进制格式仅在选择后应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292456/

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