【问题标题】:Date insertion in Google sheet appending ' in cell谷歌表格中的日期插入在单元格中附加'
【发布时间】:2016-09-04 09:39:53
【问题描述】:

要将数据写入 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

因此,我们无法将其打开为日期格式。我还附上了一张屏幕截图。

我们正在使用Google Sheets API V4。

我问这个问题是因为我没有找到任何与之相关的链接/解决方案。

【问题讨论】:

  • 大写 Y' in SimpleDateFormat` 表示周年而不是日历年。
  • 只是猜测:尝试以标准 ISO 8601 格式 (YYYY-MM-DD) 输入数据。在电子表格中应用一种格式,以您想要的任何样式显示该值。此外,请避免使用 java.time 类取代的麻烦的旧日期时间类。 String output = LocalDate.now( ZoneId.of( "America/New_York" ) ).toString() 产生 2016-01-23 样式输出。
  • 请编辑您的标题以准确总结您的问题。

标签: java google-sheets google-sheets-api


【解决方案1】:

使用ValueInputOption RAW 时,您需要在serial number format 中传递日期。 Apache POI 库提供了一个 getExcelDate 方法,可以为您处理大部分问题,但您需要添加一天来说明 epoch used 的差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多