📄 importclient.java
字号:
/* Copyright (c) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package sample.spreadsheet;import com.google.gdata.client.spreadsheet.SpreadsheetService;import com.google.gdata.client.spreadsheet.FeedURLFactory;import com.google.gdata.client.spreadsheet.SpreadsheetQuery;import com.google.gdata.client.spreadsheet.WorksheetQuery;import com.google.gdata.data.spreadsheet.SpreadsheetFeed;import com.google.gdata.data.spreadsheet.WorksheetFeed;import com.google.gdata.data.spreadsheet.CellFeed;import com.google.gdata.data.spreadsheet.SpreadsheetEntry;import com.google.gdata.data.spreadsheet.WorksheetEntry;import com.google.gdata.data.spreadsheet.CellEntry;import com.google.gdata.data.Link;import sample.util.SimpleCommandLineParser;import java.io.BufferedReader;import java.io.FileReader;import java.net.URL;import java.util.List;import java.util.regex.Pattern;/** * An application that serves as a sample to show how the SpreadsheetService * can be used to import delimited text file to a spreadsheet. * * */public class ImportClient { private SpreadsheetService service; private FeedURLFactory factory; /** * Creates a client object for which the provided username and password * produces a valid authentication. * * @param username the Google service user name * @param password the corresponding password for the user name * @throws Exception if error is encountered, such as invalid username and * password pair */ public ImportClient(String username, String password) throws Exception { factory = FeedURLFactory.getDefault(); service = new SpreadsheetService("gdata-sample-spreadsheetimport"); service.setUserCredentials(username, password); } /** * Gets the SpreadsheetEntry for the first spreadsheet with that name * retrieved in the feed. * * @param spreadsheet the name of the spreadsheet * @return the first SpreadsheetEntry in the returned feed, so latest * spreadsheet with the specified name * @throws Exception if error is encountered, such as no spreadsheets with the * name */ public SpreadsheetEntry getSpreadsheet(String spreadsheet) throws Exception { SpreadsheetQuery spreadsheetQuery = new SpreadsheetQuery(factory.getSpreadsheetsFeedUrl()); spreadsheetQuery.setTitleQuery(spreadsheet); SpreadsheetFeed spreadsheetFeed = service.query(spreadsheetQuery, SpreadsheetFeed.class); List<SpreadsheetEntry> spreadsheets = spreadsheetFeed.getEntries(); if (spreadsheets.isEmpty()) { throw new Exception("No spreadsheets with that name"); } return spreadsheets.get(0); } /** * Get the WorksheetEntry for the worksheet in the spreadsheet with the * specified name. * * @param spreadsheet the name of the spreadsheet * @param worksheet the name of the worksheet in the spreadsheet * @return worksheet with the specified name in the spreadsheet with the * specified name * @throws Exception if error is encountered, such as no spreadsheets with the * name, or no worksheet wiht the name in the spreadsheet */ public WorksheetEntry getWorksheet(String spreadsheet, String worksheet) throws Exception { SpreadsheetEntry spreadsheetEntry = getSpreadsheet(spreadsheet); WorksheetQuery worksheetQuery = new WorksheetQuery(spreadsheetEntry.getWorksheetFeedUrl()); worksheetQuery.setTitleQuery(worksheet); WorksheetFeed worksheetFeed = service.query(worksheetQuery, WorksheetFeed.class); List<WorksheetEntry> worksheets = worksheetFeed.getEntries(); if (worksheets.isEmpty()) { throw new Exception("No worksheets with that name in spreadhsheet " + spreadsheetEntry.getTitle().getPlainText()); } return worksheets.get(0); } /** * Clears all the cell entries in the worksheet. * * @param spreadsheet the name of the spreadsheet * @param worksheet the name of the worksheet * @throws Exception if error is encountered, such as bad permissions */ public void purgeWorksheet(String spreadsheet, String worksheet) throws Exception { WorksheetEntry worksheetEntry = getWorksheet(spreadsheet, worksheet); CellFeed cellFeed = service.getFeed(worksheetEntry.getCellFeedUrl(), CellFeed.class); List<CellEntry> cells = cellFeed.getEntries(); for (CellEntry cell : cells) { Link editLink = cell.getEditLink(); service.delete(new URL(editLink.getHref())); } } /** * Inserts a cell entry in the worksheet. * * @param spreadsheet the name of the spreadsheet * @param worksheet the name of the worksheet * @param row the index of the row * @param column the index of the column * @param input the input string for the cell * @throws Exception if error is encountered, such as bad permissions */ public void insertCellEntry(String spreadsheet, String worksheet, int row, int column, String input) throws Exception { URL cellFeedUrl = getWorksheet(spreadsheet, worksheet).getCellFeedUrl(); CellEntry newEntry = new CellEntry(row, column, input); service.insert(cellFeedUrl, newEntry); } /** * Prints the usage of this application. */ private static void usage() { System.out.println("Usage: java ImportClient --username [user] " + "--password [pass] --filename [file] --spreadsheet [name] " + "--worksheet [name] --delimiter [regex]"); System.out.println("\nA simple application that uses the provided Google\n" + "Account username and password to locate the\n" + "spreadsheet and worksheet in user's Google\n" + "Spreadsheet account, and import the provided\n" + "delimited text file into the worksheet."); } /** * Main entry point. Parses arguments and creates and invokes the * ImportClient. */ public static void main(String[] args) throws Exception { SimpleCommandLineParser parser = new SimpleCommandLineParser(args); String username = parser.getValue("username", "user", "u"); String password = parser.getValue("password", "pass", "passwd", "pw", "p"); String filename = parser.getValue("filename", "file", "f"); String spreadsheet = parser.getValue("spreadsheet", "s"); String worksheet = parser.getValue("worksheet", "w"); String delimiter = parser.getValue("delimiter", "delimit", "d"); boolean help = parser.containsKey("help", "h"); if (help || (username == null) || (password == null) || (spreadsheet == null) || (worksheet == null) || (delimiter == null)) { usage(); System.exit(1); } ImportClient client = new ImportClient(username, password); client.purgeWorksheet(spreadsheet, worksheet); Pattern delim = Pattern.compile(delimiter); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filename)); String line = reader.readLine(); int row = 0; while (line != null) { // Break up the line by the delimiter and insert the cells String[] cells = delim.split(line, -1); for (int col=0; col< cells.length; col++) { client.insertCellEntry(spreadsheet, worksheet, row+1, col+1, cells[col]); } // Advance the loop line = reader.readLine(); row++; } } catch (Exception e) { throw e; } finally { if (reader != null) { reader.close(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -