2016-09-04 134 views
0

要將數據寫入Google電子表格,我使用以下代碼。插入谷歌表單中的日期插入單元格

private static void writeValuesInSpreedSheet(Sheets service, String spreadsheetId, int sheetSize) throws IOException { 
    String range = "A"+(sheetSize+1)+":K"+(sheetSize+1); 
    List<List<Object>> newData = new ArrayList<>(); 
    List<Object> rowValues = new ArrayList(); 
    rowValues.add(getCurentDateInESTFormat()); 
    rowValues.add("2"); 
    rowValues.add("3"); 
    rowValues.add("4"); 
    rowValues.add("5"); 
    rowValues.add("6"); 
    rowValues.add("7"); 
    rowValues.add("8"); 
    rowValues.add("9"); 
    rowValues.add("10"); 
    rowValues.add("11"); 
    /* List<Object> rowValues1 = new ArrayList(); 
    rowValues1.add("1"); 
    rowValues1.add("2");*/ 
    newData.add(rowValues); 
    //newData.add(rowValues1); 
    // response.setValues(newData); 


    ValueRange oRange = new ValueRange(); 
    oRange.setRange(range); // I NEED THE NUMBER OF THE LAST ROW 
    oRange.setValues(newData); 
    List<ValueRange> oList = new ArrayList<>(); 
    oList.add(oRange); 

    BatchUpdateValuesRequest oRequest = new BatchUpdateValuesRequest(); 
    oRequest.setValueInputOption("RAW"); 
    oRequest.setData(oList); 

    BatchUpdateValuesResponse oResp1 = service.spreadsheets().values().batchUpdate(spreadsheetId, oRequest).execute(); 

    System.out.println("Response Values " +oResp1.values()); 

} 

private static Object getCurentDateInESTFormat() { 
    SimpleDateFormat sdfAmerica = new SimpleDateFormat("MM/dd/YYYY"); 
    sdfAmerica.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
    String sDateInAmerica = sdfAmerica.format(new Date()); 

    return sDateInAmerica; 
} 

在工作表中,我們已經定義了相應列的日期和貨幣類型。

我能夠寫入數據,但最終其在例如數據預謀' - 我們是不是可以把它開到日期格式'09/04/2016

正因爲如此。我還附加了一個屏幕截圖。

enter image description here

我們正在使用Google Sheets API V4。

我在問這個問題,因爲我沒有找到任何與它相關的鏈接/解決方案。

+1

SimpleDateFormat中的大寫'Y'表示週年而非日曆年。 –

+1

只是猜測:嘗試以標準[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式(YYYY-MM-DD)輸入數據。在電子表格中應用一種格式,以您希望的任何風格顯示該值。另外,避免現在由java.time類取代的麻煩的舊日期時間類。 'String output = LocalDate.now(ZoneId.of(「America/New_York」)).toString()'產生'2016-01-23'樣式輸出。 –

+1

請編輯您的標題*精確*總結您的問題。 –

回答

1

當使用ValueInputOptionRAW時,您需要通過serial number format中的日期。 Apache POI庫提供了一個getExcelDate方法,可以爲您處理大部分問題,但您需要添加一天來解決epoch used中的差異問題。

+0

非常感謝。它爲我工作。 –