106 votes

Accéder à Google Spreadsheets avec c# à l’aide de Google Data API

Je vais avoir quelques informations dans Google Spreadsheets comme une seule feuille. Y a-t-il un moyen par lequel je peux lire ces informations de .NET en fournissant les informations d’identification de google et adresse de la feuille de calcul. Est-ce possible avec Google Data API. En fin de compte, j’ai besoin d’obtenir les informations de Google spreadsheet dans un DataTable. Comment puis-je faire ? Si quelqu'un a essayé il, pls partager quelques informations.

184voto

Kelly Points 2079

Selon l' .NET guide de l'utilisateur:

Télécharger l' .NET client de la bibliothèque:

Ajouter ces instructions d'utilisation:

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

Authentifier:

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

Obtenir une liste de feuilles de calcul:

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

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

Étant donné un SpreadsheetEntry vous avez déjà récupéré, vous pouvez obtenir une liste de toutes les feuilles de calcul dans cette feuille de calcul comme suit:

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

Et obtenez une cellule de flux:

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

23voto

Mauricio Scheffer Points 70470

J'ai écrit un simple wrapper autour de Google .Net client de la bibliothèque, il expose une simple base de données comme interface, avec fortement typées types d'enregistrement. Voici un exemple de code:

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

Il y a également un fournisseur LINQ, qui se traduit par google structuré opérateurs de requête:

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

3voto

tonys Points 2334

Vous pouvez faire ce que vous demandez de plusieurs façons:

  1. À l'aide de Google feuille de calcul en C# de la bibliothèque (comme dans Tacoman667 de réponse) pour aller chercher un ListFeed qui peut retourner une liste de lignes (ListEntry dans Google langage) dont chacune a une liste de paires nom-valeur. La feuille de calcul Google API (http://code.google.com/apis/spreadsheets/code.htmlla documentation a plus qu'assez d'informations pour vous aider à démarrer.

  2. Utilisez le Google visualisation de l'API qui vous permet de soumettre plus sophistiqué (un peu comme le SQL des requêtes pour récupérer uniquement les lignes/colonnes dont vous avez besoin.

  3. La feuille de calcul contenu est renvoyé comme Atom de sorte que vous pouvez utiliser XPath ou SAX analyse pour extraire le contenu d'une liste de flux. Il est un exemple de cette façon de faire (en Java et Javascript, mais j'ai peur) http://gqlx.twyst.co.za.

2voto

Tacoman667 Points 953

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

Cela devrait vous aider à démarrer. Je n’ai pas joué avec elle ces derniers temps, mais tout à l’heure, j’ai téléchargé une version très ancienne et il semblait assez solide. Celui-ci est mis à jour pour Visual Studio 2008 comme bien afin de vérifier les docs !

1voto

Steve Haigh Points 6261

Je suis sûr qu’il y aura quelques kits de développement logiciel c# / toolkits sur Google Code pour cela. J’ai trouvé celui-ci, mais il peut y avoir d’autres donc il est utile d’avoir une navigation autour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X