首页 > 解决方案 > 如何将数据从谷歌电子表格存储到数据库(:-只有第一行被存储到数据库中

问题描述

public class AccountProjectSheet {

    public AccountProjectDTO spreadsheets() {
        SpreadsheetService service = new SpreadsheetService("Sheet1");
        AccountProjectDTO accountProjectDTO = new AccountProjectDTO(); //creating an object of AccountProjectDto class to assign values which are coming from spreadsheet
        try {
            //Read Data
            String sheetUrl = "https://spreadsheets.google.com/feeds/list/*******key********(just to maintain privacy)********/default/public/values";

            URL url = new URL(sheetUrl);
            // Get Feed of Spreadsheet url
            ListFeed lf = service.getFeed(url, ListFeed.class);
            //Iterate over feed to get cell value

            for (ListEntry le: lf.getEntries()) {
                CustomElementCollection cec = le.getCustomElements();
                //Pass column name to access it's cell values
                accountProjectDTO.setProjectCode(cec.getValue("projectCode"));
                accountProjectDTO.setProjectName(cec.getValue("projectName"));
                accountProjectDTO.setAccountCode(cec.getValue("accountCode"));
                accountProjectDTO.setAccountName(cec.getValue("accountName"));
                accountProjectDTO.setProjectManagerName(cec.getValue("projectManagerName"));
                accountProjectDTO.setDeliveryManagerName(cec.getValue("deliveryManagerName"));
                accountProjectDTO.setProjectStatus(cec.getValue("projectStatus"));
                accountProjectDTO.setProjectMetricsLink(cec.getValue("projectMatricsLink"));

                return accountProjectDTO;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } catch (ServiceException e) {
            e.printStackTrace();
            return null;
        }
        return accountProjectDTO;
    }
}

我正在尝试将数据从 Google Sheets 获取到 Hana DB,但只有第一行受到影响。我想将所有行存储在电子表格中

标签: javaspringhibernateresthana

解决方案


阅读代码,我假设您想要获取一个列表,AccountProjectDTO以便进一步将它们存储在数据库中。但是方法签名是错误的,因为该方法只返回一个AccountProjectDTO

您正在返回第一个AccountProjectDTO而不是构建所有列表AccountProjectDTO并返回它。

从原理上讲,您应该替换它:

public AccountProjectDTO spreadsheets() {
    SpreadsheetService service = new SpreadsheetService("Sheet1");
    AccountProjectDTO accountProjectDTO = new AccountProjectDTO(); 
    [...]

        for (ListEntry le: lf.getEntries()) {
            [...]   
            return accountProjectDTO;
        }

接着就,随即 :

public List<AccountProjectDTO> spreadsheets() {
    SpreadsheetService service = new SpreadsheetService("Sheet1");
    List<AccountProjectDTO> result = new ArrayList<>();
    [...]

        for (ListEntry le: lf.getEntries()) {
            AccountProjectDTO accountProjectDTO = new AccountProjectDTO(); 
            [...]   
            result.add(accountProjectDTO);
        }
    return result;
}

推荐阅读