Pergunta

Eu estou tendo algumas informações no Google Spreadsheets como uma única folha. Existe alguma maneira pela qual eu posso ler esta informação do .NET, fornecendo as credenciais do Google e endereço de planilha. É possível usar as APIs de dados do Google. Em última análise, eu preciso para obter as informações de planilha do Google em um DataTable. Como eu posso fazer isso? Se alguém tentou-lo, pls compartilhar algumas informações.

Foi útil?

Solução

De acordo com a .NET guia do usuário :

Faça download da biblioteca cliente .NET :

Adicionar estas declarações usando:

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

Authenticate:

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

Obter uma lista de planilhas:

SpreadsheetQuery query = new SpreadsheetQuery();
SpreadsheetFeed feed = myService.Query(query);

Console.WriteLine("Your spreadsheets: ");
foreach (SpreadsheetEntry entry in feed.Entries)
{
    Console.WriteLine(entry.Title.Text);
}

Dada uma SpreadsheetEntry você já recuperado, você pode obter uma lista de todas as planilhas nesta planilha da seguinte forma:

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);
}

E ter uma alimentação à base de células:

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);
}

Outras dicas

Eu escrevi um simples invólucro volta do Google biblioteca cliente .NET , ele expõe um banco de dados como simples interface, com strongly- tipos de registro digitado. Aqui está um código de exemplo:

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);

Há também um provedor de LINQ que se traduz em Google operadores de consulta estruturados :

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

(Jun-Nov 2016) A pergunta e suas respostas são agora out-of-date como: 1) APIs GData são a geração anterior de Google APIs. Embora nem todas as APIs GData foram reprovados, todas as últimas Google APIs fazer não o Protocolo de dados do Google ; e 2) há um novo Planilhas Google API v4 (também não GData).

Avançando a partir daqui, você precisa para obter a Biblioteca Google APIs cliente para .NET e utilize a última Sheets API, que é muito mais poderoso e flexível do que qualquer API anterior. Aqui está um exemplo C # código para ajudar você a começar. Além disso, verifique a documentação de referência .NET para a API Sheets e os desenvolvedores biblioteca cliente .NET Google APIs guiar .

Se você não é alérgico a Python (se você é, apenas fingir que é pseudocódigo;)), fiz vários vídeos com um pouco maior mais exemplos, "mundo real" do uso da API que você pode aprender com e migrar para C # se desejado:

Você pode fazer o que você está pedindo várias maneiras:

  1. Usando biblioteca # do Google planilha C (como na resposta de Tacoman667) para buscar uma ListFeed que pode retornar uma lista de linhas (ListEntry no Google jargão) cada um dos quais tem uma lista de pares nome-valor. A API planilha do Google ( http://code.google.com/apis/spreadsheets/code .html ) documentação tem mais do que suficiente informação para você começar.

  2. Usando a API de visualização do Google que permite que você envie mais sofisticado (quase como SQL) consulta para buscar apenas as linhas / colunas que você precisa.

  3. O conteúdo de planilhas são devolvidos como Atom assim você pode usar XPath ou SAX análise para extrair o conteúdo de um feed lista. Há um exemplo de fazê-lo desta forma (em Java e Javascript única que eu tenho medo) em http: // gqlx.twyst.co.za .

eu tenho certeza que haverá alguns C # SDKs / toolkits no Google Code para isso. Eu encontrei esta , mas pode haver outros, de modo que vale a pena ter um torno browse .

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

Este deve começar. Eu não tenho jogado com ele ultimamente, mas eu baixei uma versão muito antiga um tempo atrás e parecia bastante sólido. Este é atualizado para Visual Studio 2008, bem como para verificar os docs!

Esta página do blog Twilio feita em 24 de marco de 2017 por Marcos Placona pode ser útil.

Google Spreadsheets e .NET Núcleo

Ele faz referência Google.Api.Sheets.v4 OAuth2 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top