如何在excel文件的最后一位添加零?
我通过下面的代码打印下面的值
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(s.getNetAmount());
System.out.println(df.format(s.getNetAmount()));
,结果是
691.200
691.20
但是当我把它写入excel文件时,我希望得到 691.20 ,但我得到691.2。
这是我写入excel文件的方式
public void write(List<? extends List> list) throws Exception {
if (list != null) {
try {
writeFile(header(), detail(list.get(0)));
} catch (BatchRunException ex) {
throw new BatchRunException(" Fail..." + ex);
}
}
}
private void writeFile(String header, List<String> detail) throws IOException, BatchRunException {
String fullPath = outputPath + fileNameFormat;
File file = new File(fullPath);
File path = new File(outputPath);
if (!path.exists()) {
path.mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
bw.write(header);
bw.write(NEW_LINE);
for (String s : detail) {
bw.write(s);
bw.write(NEW_LINE);
}
} catch (IOException ex) {
throw new BatchRunException(" Fail..." + ex);
}
}
private String header() {
StringBuilder bf = new StringBuilder();
bf.append("Employee Name").append(SEPERATOR);
bf.append("Amount").append(SEPERATOR);
return bf.toString();
}
private List<String> detail(List<SettlementList> dList) {
List<String> list = new ArrayList();
BigDecimal a = new BigDecimal("0");
for (SettlementList s : dList) {
StringBuilder bf = new StringBuilder();
bf.append(s.Name()).append(SEPERATOR);
bf.append(s.getNetAmount()).append(SEPERATOR); // here the error
list.add(bf.toString());
}
return list;
}
答案 0 :(得分:2)
这是因为Cell
样式而不是DecimalFormat
。尝试设置单元格样式,例如:
HSSFCell cell = row.createCell(0);
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellValue(s.getNetAmount().doubleValue());
<强>更新强>
看起来您正在写入csv
文件并尝试使用xls打开它。在这种情况下,Excel将根据数据格式化单元格。因此,对于值为691.200
的行,Excel会将这些值解释为数值并相应地对其进行格式化(使其成为691.2
)。有两种方法可以解决它:
xls
而不是csv
并根据上面的代码段应用单元格格式Strings
这些数字写入csv,在Excel中打开并对相应的列应用Text
格式。答案 1 :(得分:0)