Domanda

Sto avendo qualche informazione in Google Spreadsheets come un singolo foglio. C'è un modo con cui posso leggere queste informazioni da .NET fornendo il google credenziali e foglio di calcolo indirizzo. E 'possibile utilizzare le API di dati di Google. In definitiva ho bisogno di ottenere le informazioni da parte di Google foglio di calcolo in un DataTable. Come posso farlo? Se qualcuno ha tentato di farlo, pls condividere alcune informazioni.

È stato utile?

Soluzione

Secondo il .NET guida :

Scarica il .NET libreria client :

Aggiungi queste affermazioni utilizzando:

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

Autentica:

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

Ottenere un elenco di fogli di calcolo:

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

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

Dato uno SpreadsheetEntry hai già recuperato, è possibile ottenere un elenco di tutti i fogli di lavoro in questo foglio di calcolo come segue:

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 ottenere un feed basato cella:

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

Altri suggerimenti

ho scritto un semplice involucro intorno di Google Net libreria client , espone un'interfaccia di database-like semplice, con strongly- tipi di record digitato. Ecco alcuni esempi di codice:

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

C'è anche un fornitore di LINQ che si traduce in strutturata operatori di query :

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

(giugno-novembre 2016) La domanda e le sue risposte sono ormai out-of-date: 1) API GData sono alla precedente generazione di API di Google. Anche se non tutte le API GData sono stati deprecati, tutte le ultime API di Google fanno non del protocollo Google Data ; e 2) c'è un nuovo Fogli Google API v4 (anche non GData).

Andando avanti da qui, è necessario per ottenere la libreria client di Google API for .NET e utilizzare l'ultima Fogli API, che è molto più potente e flessibile rispetto a qualsiasi API precedente. Ecco un C # codice di esempio per aiutarti ad iniziare. verificare anche la NET documenti di riferimento per l'API Fogli e .NET Google API libreria client sviluppatori guida .

Se non siete allergici a Python (se siete, basta far finta è pseudocodice;)), ho fatto diversi video con un po 'più a lungo, più esempi "mondo reale" di utilizzare l'API si può imparare da e migrare a C #, se desiderato:

Si può fare quello che stai chiedendo diversi modi:

  1. Uso biblioteca # foglio di calcolo di Google C (come nella risposta di Tacoman667) per andare a prendere un ListFeed che può restituire un elenco di righe (ListEntry in Google gergo) ognuno dei quali ha una lista di coppie nome-valore. L'API di Google foglio di calcolo ( http://code.google.com/apis/spreadsheets/code .html ) documentazione ha più che sufficienti informazioni per iniziare.

  2. Utilizzando l'API di visualizzazione di Google che consente di inoltrare più sofisticato (quasi come SQL) query per recuperare solo le righe / colonne si richiedono.

  3. Il contenuto del foglio di calcolo vengono restituiti come Atom in modo da poter usare XPath o SAX parsing per estrarre il contenuto di un feed lista. V'è un esempio di farlo in questo modo (in Java e Javascript solo se ho paura) a http: // gqlx.twyst.co.za .

Sono abbastanza sicuro che ci saranno alcuni C # SDK / toolkit su Google Code per questo. Ho trovato questo , ma ci possono essere altri quindi vale la pena avere una sfoglia intorno .

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

Questo dovrebbe iniziare. Non ho giocato con lui ultimamente, ma ho scaricato una versione molto vecchia un po 'indietro e sembrava abbastanza solido. Questo viene aggiornato a Visual Studio 2008, nonché in modo da controllare i documenti!

Questa pagina di blog Twilio fatto il 24 marzo 2017 da Marcos Placona può essere utile.

Google Spreadsheets e .NET Nucleo

Si fa riferimento a Google.Api.Sheets.v4 OAuth2 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top