我在 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# :

您可以通过多种方式完成您所要求的事情:

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

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

  3. 电子表格内容作为 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以及因此检查出的文档!

马科斯Placona 2017年3月24日,由这Twilio博客页面可能会有所帮助。

谷歌电子表格和.NET核心

它引用 Google.Api.Sheets.v4 的OAuth2

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top