使用本地数据库中的数据创建电子表格

时间:2016-07-05 11:30:28

标签: android google-spreadsheet-api google-drive-android-api android-database

我想使用存储在本地数据库中的数据创建电子表格。我有5列和数据。我想创建一个具有相同列和数据的电子表格。我尝试过使用sheet api,但我不明白如何创建一个从db

中获取数据的方法

这是我从电子表格中提取数据的代码

private List<String> getDataFromApi() throws IOException {  
String sheetId =  "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
        String range = "Class Data!A2:E";
        List<String> results = new ArrayList<String>();
        ValueRange response = this.mService.spreadsheets().values()
                .get(sheetId, range)
                .execute();
        List<List<Object>> values = response.getValues();
        if (values != null) {
            results.add("Name, Major");
            for (List row : values) {
                results.add(row.get(0) + ", " + row.get(4));
            }
        }
        return results;
    }

这是我的表 https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit

我做了一些研究,发现我们可以使用驱动器api编辑电子表格,但我无法找到方法。我已经实现了驱动器api,但可以创建和编辑文件 请帮忙

1 个答案:

答案 0 :(得分:0)

您需要使用Google Sheets API,Google表格API v3(以前称为Google Spreadsheets API)可让您开发读取和修改Google表格中工作表和数据的客户端应用程序。要实现原始Sheets + Docs组合的等效功能,您应该使用Drive API执行文件操作,例如搜索/移动/创建/删除。

除了Drive API的范围之外,还要在您的授权中添加以下范围:

https://spreadsheets.google.com/feeds

如果您使用的是GData client libraryGoogle OAuth client library,则在OAuth 2.0授权后设置这两项服务非常容易。

// Acquire clientId, clientSecret and refreshToken
...

// Create shared credential
GoogleCredential credential = new GoogleCredential.Builder()
.setClientSecrets(clientId, clientSecret)
.setJsonFactory(jsonFactory)
.setTransport(transport)
.build().setRefreshToken(refreshToken);

// Setup both servives
Drive driveService = new Drive.Builder(transport, jsonFactory, credential).build();
SpreadsheetService sheetService = new SpreadsheetService(...);
sheetService.setOAuth2Credentials(credential); // only provided in newer releases
sheetService.useSsl();

两个API中的资源ID都相同,因此您可以使用Drive API方法搜索某个文件的ID,并使用Sheets API方法访问该文件中的工作表。

File file = driveService.files().get().setFields(...).execute();
String feedUrl = "https://spreadsheets.google.com/feeds/worksheets/" 
+ file.getId + "/private/full";
WorksheetFeed feed = sheetService.getFeed(feedUrl, WorksheetFeed.class);