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.
添加回答
舉報