DataFormatter (org.apache.poi) 删除我的零

当我尝试获取具有格式的单元格的值时 - 我得到的结果没有零。


单元格值:7654


单元格格式值:0" 0/10с"


单元格显示值:7654 0/10с


DataFormatter formatter = new DataFormatter();

String orderNumber = formatter.formatCellValue(cell);

System.out.println(orderNumber);

结果:7654 /1с


屏幕截图:单元格格式值


慕娘9325324
浏览 196回答 1
1回答

MMMHUHU

这是在将数字格式转换为 aapache poi时的错误。正确的对应是 a 。但是未能正确翻译。DataFormatterExcel0" 0/10с"java.text.Formatjava.text.Formatnew java.text.DecimalFormat("0' 0/10с'")apache poiDataFormatterapache poi您应该就此提交错误报告。但是在错误报告中,你不应该给出Excel数字格式0" 0/10с"作为示例,因为它包含西里尔字母с,因此可能导致对 Unicode 问题的错误假设。使用数字格式时会发生相同的问题(0当它们包含在引号中的文本部分时会丢失) 。Excel0" 0abc0"作为一种解决方法,可以告诉您如何翻译DataFormatter单个特殊数字格式。为此,请使用DataFormatter.addFormatExcel方法。例子:import org.apache.poi.ss.usermodel.*;import java.io.FileInputStream;class DataFormatterAddFormat { public static void main(String[] args) throws Exception {  Workbook workbook = WorkbookFactory.create(new FileInputStream("ExcelExample.xlsx"));  DataFormatter dataFormatter = new DataFormatter();  FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();  dataFormatter.addFormat("0\" 0/10\u0441\"", new java.text.DecimalFormat("0' 0/10\u0441'"));  dataFormatter.addFormat("0\" 0/10c\"", new java.text.DecimalFormat("0' 0/10c'"));  dataFormatter.addFormat("0\" 0abc0\"", new java.text.DecimalFormat("0' 0abc0'"));  Sheet sheet = workbook.getSheetAt(0);  for (Row row : sheet) {   for (Cell cell : row) {     String value = dataFormatter.formatCellValue(cell, formulaEvaluator);     System.out.println(value);   }  }  workbook.close(); }}现在可以正确翻译添加的特殊数字格式。当然这并不是真正的最终解决方案。这就是提示将错误报告提交给apache poi.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java