2016-12-04 41 views
0

我正在讀谷歌電子表格像在Java快速入門NUMBERFORMAT谷歌電子表格API v4的Java的

https://developers.google.com/sheets/quickstart/java

快速入門explaines如何從一個給定的範圍

..... 
String range = "Class Data!A2:E"; 
ValueRange response = service.spreadsheets().values() 
    .get(spreadsheetId, range) 
    .execute(); 

List<List<Object>> values = response.getValues(); 

NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN); 

for (int i = 1; i < values.size(); i++) { 
    List row = values.get(i); 
    double l1 = nf.parse(row.get(1).toString()).doubleValue(); 
.... 

當你讀到的數據描述可以看到我正在讀取來自響應的雙精度值

我期望雙精度值的專用格式(例如12,34 instea d的12.34)

我可以作爲參數傳遞給請求我想要的數字格式嗎? 喜歡的東西:

service.spreadsheets().values().get(spreadsheetId, range).myNumberFormat("##,#####").execute() 

問候

邁克爾

回答

1

你從電子表格中,默認情況下,已格式化它在電子表格的方式響應。您致電nf.parse(..)正在將該格式化版本轉換爲原生Java類型,因此您將失去格式。

如果您直接需要原始值(因此您不需要在本地進行解析),則可以將valueRenderOption設置爲UNFORMATTED_VALUE。有關更多信息,請參閱this sample

我不太確定你問的是什麼問題,因爲你的代碼示例已經獲得了一個格式化版本,並且你明確地通過解析它來刪除該格式。

如果您希望電子表格中尚未包含特定類型的格式,請檢索原始值(使用UNFORMATTED_VALUE valueRenderOption),並在本地使用您的NumberFormat轉換爲該格式。或者,在電子表格中設置所需的格式,然後檢索這些值並且不要重新解析它們。