第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

POI 電子表格本地化

POI 電子表格本地化

藍(lán)山帝景 2023-02-16 16:29:53
使用Apache POI OOXML 和XSSF 模式,創(chuàng)建一個新的工作簿,如何設(shè)置電子表格的語言(即英語(美國))?我在上面找不到任何東西。該設(shè)置不需要是特定于單元格的,應(yīng)該適用于所有工作表。我正在使用 POI 4.1.0 版。
查看完整描述

1 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊

文件中工作表數(shù)據(jù)的存儲Excel未本地化。工作表數(shù)據(jù)的存儲在函數(shù)名稱、列表定界符、小數(shù)點和千位定界符方面始終是美國英語。只有 Excel 應(yīng)用程序是本地化的。Excel GUI從文件中讀取數(shù)據(jù),然后翻譯函數(shù)名稱、列表定界符和小數(shù)點以及千位定界符。


讓我們舉個例子:


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);

  }


 }

}

如您所見,代碼中沒有任何內(nèi)容是本地化的。都是en_US。函數(shù)名ROUND在公式中,函數(shù)參數(shù)之間的分隔符是逗號,同樣是列表分隔符,double值中的小數(shù)點分隔符是點。數(shù)字格式代碼也是en_US.


文件中存儲的內(nèi)容沒有Excel.xlsx以任何方式本地化。


但是如果我用Excel.xlsx我的 German打開Excel,那么它看起來像:

http://img1.sycdn.imooc.com//63edead10001ec3e10190321.jpg

注意公式=RUNDEN(A3;2)。函數(shù)名稱翻譯成德語,函數(shù)參數(shù)之間的分隔符是分號,同樣是列表分隔符,double 值中的小數(shù)點分隔符是逗號,千位分隔符是點。

此外,數(shù)字格式代碼現(xiàn)在是德語:

http://img1.sycdn.imooc.com//63edeadd0001076405380454.jpg

為什么是這樣?主要是因為是德文Excel申請。但也因為Windows決定日期格式的區(qū)域設(shè)置

http://img1.sycdn.imooc.com//63edeaea00017eb404700539.jpg

...和十進(jìn)制分隔符、列表分隔符和千位分隔符。

http://img1.sycdn.imooc.com//63edeaf60001eb5604630571.jpg


查看完整回答
反對 回復(fù) 2023-02-16
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號