使用Google Data API使用C#访问Google电子表格

Google电子表格中包含一些信息。 有什么办法可以通过提供谷歌证书和电子表格地址从.NET读取这些信息。 是否有可能使用Google数据API。 最终,我需要从DataTable中的Google电子表格中获取信息。 我该怎么做? 如果有人尝试过,请分享一些信息。

根据.NET用户指南 :

下载.NET客户端库 :

添加这些使用语句:

using Google.GData.Client; using Google.GData.Extensions; using Google.GData.Spreadsheets; 

authentication:

 SpreadsheetsService myService = new SpreadsheetsService("exampleCo-exampleApp-1"); myService.setUserCredentials("jo@gmail.com", "mypassword"); 

获取电子表格列表:

 SpreadsheetQuery query = new SpreadsheetQuery(); SpreadsheetFeed feed = myService.Query(query); Console.WriteLine("Your spreadsheets: "); foreach (SpreadsheetEntry entry in feed.Entries) { Console.WriteLine(entry.Title.Text); } 

给定一个您已经检索的SpreadsheetEntry,您可以获得此电子表格中所有工作表的列表,如下所示:

 AtomLink link = entry.Links.FindService(GDataSpreadsheetsNameTable.WorksheetRel, null); WorksheetQuery query = new WorksheetQuery(link.HRef.ToString()); WorksheetFeed feed = service.Query(query); foreach (WorksheetEntry worksheet in feed.Entries) { Console.WriteLine(worksheet.Title.Text); } 

并获得一个基于细胞的饲料:

 AtomLink cellFeedLink = worksheetentry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null); CellQuery query = new CellQuery(cellFeedLink.HRef.ToString()); CellFeed feed = service.Query(query); Console.WriteLine("Cells in this worksheet:"); foreach (CellEntry curCell in feed.Entries) { Console.WriteLine("Row {0}, column {1}: {2}", curCell.Cell.Row, curCell.Cell.Column, curCell.Cell.Value); } 

我为 Google的.Net客户端库 编写了一个简单的包装 ,它使用强types的loggingtypes公开了一个更简单的类似数据库的接口。 以下是一些示例代码:

 public class Entity { public int IntProp { get; set; } public string StringProp { get; set; } } var e1 = new Entity { IntProp = 2 }; var e2 = new Entity { StringProp = "hello" }; var client = new DatabaseClient("you@gmail.com", "password"); const string dbName = "IntegrationTests"; Console.WriteLine("Opening or creating database"); db = client.GetDatabase(dbName) ?? client.CreateDatabase(dbName); // databases are spreadsheets const string tableName = "IntegrationTests"; Console.WriteLine("Opening or creating table"); table = db.GetTable<Entity>(tableName) ?? db.CreateTable<Entity>(tableName); // tables are worksheets table.DeleteAll(); table.Add(e1); table.Add(e2); var r1 = table.Get(1); 

还有一个LINQ提供者可以翻译成谷歌的结构化查询操作符 :

 var q = from r in table.AsQueryable() where r.IntProp > -1000 && r.StringProp == "hello" orderby r.IntProp select r; 

(2016年6月 – 11月)这个问题和答案现在已经过时了:1) GData API是上一代Google API。 尽pipe并非所有的GData API都已被弃用,但所有最新的Google API 都不使用Google数据协议 ; 2)有一个新的Google Sheets API v4 (也不是GData)。

从这里开始,您需要获得适用于.NET的Google API客户端库,并使用最新的Sheets API ,该API比以前的任何API都更加强大和灵活。 这里有一个C#代码示例,以帮助您开始。 另请查看Sheets API和.NET Google API客户端库开发人员指南的.NET参考文档 。

如果你对Python没有过敏(如果是的话,就假装它是伪代码;)),我用一些稍微长一点的“真实世界”的例子来制作一些video,如果需要的话可以学习并迁移到C# :

  • 将SQL数据迁移到工作表 (代码深潜后 )
  • 使用Sheets API格式化文本 (代码深入文章 )
  • 从电子表格数据生成幻灯片 (代码深潜后 )

你可以通过几种方式来做你想问的问题:

  1. 使用Google的电子表格C#库(如Tacoman667的答案)来获取一个ListFeed,它可以返回一个行列表(Google语句中的ListEntry),每个列表都有一个名称 – 值对列表。 Google电子表格API( http://code.google.com/apis/spreadsheets/code.html )文档提供了足够多的信息来帮助您入门。

  2. 使用Google可视化API,可以让您提交更复杂的(几乎像SQL)查询来只提取所需的行/列。

  3. 电子表格内容作为Atom提要返回,因此您可以使用XPath或SAXparsing来提取列表提要的内容。 在http://gqlx.twyst.co.za有一个这样做的例子(在Java和Javascript中,只有我害怕)。;

我敢肯定在Google Code中会有一些C#SDK /工具包。 我find了这个 ,但也可能有其他的,所以值得浏览一下。

http://code.google.com/apis/gdata/articles/dotnet_client_lib.html

这应该让你开始。 最近我还没有玩过,但是我回到了一个非常旧的版本,而且看起来很稳定。 这一个更新到Visual Studio 2008以及检查文档!