使用 Google Data API 通过 C# 访问 Google 电子表格
题
我在 Google 电子表格中将一些信息作为一张表。有什么方法可以通过提供 google 凭据和电子表格地址来从 .NET 读取此信息。是否可以使用 Google Data API。最终我需要从数据表中的 Google 电子表格中获取信息。我该怎么做?如果有人尝试过,请分享一些信息。
解决方案
按照 .NET用户指南:
下载 .NET客户端库:
...添加这些使用语句:
using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Spreadsheets;
身份验证:
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);
}
其他提示
我写围绕一个简单的包装 谷歌的.NET客户端库,它暴露了一个简单的数据库一样的界面,与strongly-输入记录类型。下面是一些示例代码:
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。虽然并非所有 GData API 均已弃用, 所有最新的 Google API 做 不是 使用 谷歌数据协议;2)有一个 新的 Google Sheets API v4 (也不是 GData)。
从这里继续前进,您需要得到 适用于 .NET 的 Google API 客户端库 并使用最新的 表格API, ,它比以前的任何 API 都更强大、更灵活。这是一个 C# 代码示例 帮助您入门。另请检查 Sheets API 的 .NET 参考文档 和 .NET Google API 客户端库开发人员指南.
如果您对 Python 不过敏(如果您过敏,请假装它是伪代码;)),我制作了几个视频,其中包含稍长、更“真实”的 API 使用示例,您可以从中学习并根据需要迁移到 C# :
- 将 SQL 数据迁移到工作表 (代码深入探讨 邮政)
- 使用 Sheets API 设置文本格式 (代码深入探讨 邮政)
- 从电子表格数据生成幻灯片 (代码深入探讨 邮政)
您可以通过多种方式完成您所要求的事情:
使用 Google 的电子表格 C# 库(如 Tacoman667 的答案)获取 ListFeed,它可以返回行列表(Google 术语中的 ListEntry),每行都有一个名称-值对列表。Google 电子表格 API (http://code.google.com/apis/spreadsheets/code.html)文档包含足够的信息来帮助您入门。
使用 Google 可视化 API,您可以提交更复杂的(几乎像 SQL)查询来仅获取您需要的行/列。
电子表格内容作为 Atom feed 返回,因此您可以使用 XPath 或 SAX 解析来提取列表 feed 的内容。有一个这样做的例子(尽管我担心仅在 Java 和 Javascript 中) http://gqlx.twyst.co.za.
我敢肯定还会有一些C#的SDK /谷歌代码工具包这一点。我发现这一个,但也有可能是其他所以它的价值围绕具有浏览
http://code.google.com/apis/gdata/articles /dotnet_client_lib.html
这应该让你开始。我还没有发挥它最近,但我下载了一个很老的版本,而回,它似乎非常稳固。这一次被更新到Visual Studio 2008以及因此检查出的文档!