1 回答
TA贡献1834条经验 获得超8个赞
这是在将数字格式转换为 aapache poi
时的错误。正确的对应是 a 。但是未能正确翻译。DataFormatter
Excel
0" 0/10с"
java.text.Format
java.text.Format
new java.text.DecimalFormat("0' 0/10с'")
apache poi
DataFormatter
apache poi
您应该就此提交错误报告。但是在错误报告中,你不应该给出Excel
数字格式0" 0/10с"
作为示例,因为它包含西里尔字母с
,因此可能导致对 Unicode 问题的错误假设。使用数字格式时会发生相同的问题(0
当它们包含在引号中的文本部分时会丢失) 。Excel
0" 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.
添加回答
举报