MMTTMM
文件中工作表数据的存储Excel未本地化。工作表数据的存储在函数名称、列表定界符、小数点和千位定界符方面始终是美国英语。只有 Excel 应用程序是本地化的。Excel GUI从文件中读取数据,然后翻译函数名称、列表定界符和小数点以及千位定界符。让我们举个例子:import java.io.FileOutputStream;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.util.GregorianCalendar;class CreateExcel { public static void main(String[] args) throws Exception { try (Workbook workbook = new XSSFWorkbook(); FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) { Object[][] data = new Object[][] { new Object[] {"Value", "Date", "Formatted value", "Formula"}, new Object[] {123.456789, new GregorianCalendar(2019, 0, 15), 123.456789, "ROUND(A2,2)"}, new Object[] {1234.56789, new GregorianCalendar(2019, 5, 15), 1234.56789, "ROUND(A3,2)"} }; DataFormat dataFormat = workbook.createDataFormat(); CellStyle dateStyle = workbook.createCellStyle(); dateStyle.setDataFormat(dataFormat.getFormat("DDDD, MMMM, DD, YYYY")); CellStyle numberStyle = workbook.createCellStyle(); numberStyle.setDataFormat(dataFormat.getFormat("#,##0.00 \" Coins\"")); Sheet sheet = workbook.createSheet(); for (int r = 0; r < data.length; r++) { Row row = sheet.createRow(r); for (int c = 0; c < data[0].length; c++) { Cell cell = row.createCell(c); if (r == 0) cell.setCellValue((String)data[r][c]); if (r > 0 && c == 0) { cell.setCellValue((Double)data[r][c]); } else if (r > 0 && c == 1) { cell.setCellValue((GregorianCalendar)data[r][c]); cell.setCellStyle(dateStyle); } else if (r > 0 && c == 2) { cell.setCellValue((Double)data[r][c]); cell.setCellStyle(numberStyle); } else if (r > 0 && c == 3) { cell.setCellFormula((String)data[r][c]); } } } for (int c = 0; c < data[0].length; c++) { sheet.autoSizeColumn(c); } workbook.write(fileout); } }}如您所见,代码中没有任何内容是本地化的。都是en_US。函数名ROUND在公式中,函数参数之间的分隔符是逗号,同样是列表分隔符,double值中的小数点分隔符是点。数字格式代码也是en_US.文件中存储的内容没有Excel.xlsx以任何方式本地化。但是如果我用Excel.xlsx我的 German打开Excel,那么它看起来像:注意公式=RUNDEN(A3;2)。函数名称翻译成德语,函数参数之间的分隔符是分号,同样是列表分隔符,double 值中的小数点分隔符是逗号,千位分隔符是点。此外,数字格式代码现在是德语:为什么是这样?主要是因为是德文Excel申请。但也因为Windows决定日期格式的区域设置...和十进制分隔符、列表分隔符和千位分隔符。