GSpread.NET
Google Spreadsheets .NET API
Beschreibung
GSpread.NET ist eine schnelle und einfach zu verwendende Bibliothek, die für die Arbeit mit Google Spreadsheets entwickelt wurde und die bekannte API von Microsoft Excel nutzt.
Wir stellen die API in COM bereit, sodass Sie die Freiheit haben, unsere Komponente überall dort zu verwenden, wo Sie zuvor die MS Excel-API verwendet haben, einschließlich Skripts und Anwendungen. Mit der neuen Google API-Nutzung müssen Sie keine neuen Skripte von Grund auf erstellen oder alte Programme neu schreiben. Instanziieren Sie einfach unser COM-Objekt anstelle von Microsoft Excel und unsere Komponente erledigt den Rest:
1 ––– Set objExcel = CreateObject("Excel.Application")
2 +++ Set objExcel = CreateObject("GSpreadCOM.Application")
Hauptfunktionen
In der Programmierwelt gibt es unzählige Skripte und Programme, die mit MS Excel arbeiten. Mit unserem GSpread.NET bieten wir Ihnen eine neue Möglichkeit, mit Google Spreadsheets auf die gleiche Weise (und mit der gleichen API!) zu arbeiten, wie Sie es in den letzten Dutzenden von Jahren mit MS Excel getan haben.
Probieren Sie einfach eine Codezeile aus, um unsere Implementierung anstelle der von Microsoft zu verwenden.
Die Bibliothek unterstützt die Teilmenge der MS Excel-Funktionen, sodass Sie keine E-Mail-Verwaltung, Pivot-Tabellen oder komplizierten Diagramme finden. Wenn Sie bestimmte Daten verwalten und etwas berechnen oder vielleicht Formeln, Farben und Schriftarten hinzufügen oder sogar Tabellenkalkulationen von Grund auf erstellen müssen – GSpread.NET wird Ihnen sicherlich helfen.
Warum GSpread.NET
Ein zweites Leben für Old-School-Drehbücher
Vor einiger Zeit standen wir vor der Notwendigkeit, Microsoft Excel-Dokumente und Google Spreadsheets zusammen zu verwenden. Es war wirklich mühsam und wir haben beschlossen, die Serviceschicht so zu gestalten, dass sie die API-Unterschiede und Code-Refactorings nutzt.
Die Geschichte war einfach: Wir hatten ein Tool, das einige Daten aus mehreren Excel-Dokumenten extrahierte und auf der Grundlage der extrahierten Daten Excel-Ausgabedokumente generierte. Die Herausforderung begann, als einige dieser Excel-Quelldokumente nach Google Drive migriert wurden.
Da es sich bei dem Tool um ein Legacy-Tool handelte, das COM für die Arbeit mit Excel verwendete (obwohl wir über den Quellcode dieses Tools verfügten), haben wir mehrere einfache VBS-Skripte darüber implementiert, um die Ergebnisse zu optimieren, da wir nicht viel ändern wollten. Die ideale Lösung bestand darin, es zum Laufen zu bringen, ohne den alten Code überhaupt zu verändern. Andernfalls wäre es viel einfacher, den gesamten Legacy-Code neu zu implementieren.
Daher haben wir beschlossen, eine COM-Wrapper-Bibliothek für die Google-Client-Bibliothek zu erstellen, um den alten Code mit minimalen Änderungen für den Zugriff auf Google Spreadsheets wiederzuverwenden.
Abschluss
Der aufmerksame Leser wird sich fragen, wie man die Anmeldeinformationen für das Google-Konto bereitstellt, damit alles wie erwartet funktioniert. Die gute Nachricht ist, dass Microsoft die MailLogon-Methode zu Excel hinzugefügt hat. Anwendungsschnittstelle. Daher verwenden wir diese Methode zur Authentifizierung bei Google und erhalten der Einfachheit halber Standardanmeldeinformationen aus der Konfigurationsdatei.
1 // Name - User name, any you like 2 // ClientIdAndSecret - `client_id|client_secret` format 3 // ScriptId - Google Apps script ID 4 app.MailLogon(Name, ClientIdAndSecret, ScriptId); 5
Unser internes Projekt wuchs zu einer GSpreadCOM-Bibliothek heran, die den Zugriff (Lesen/Schreiben) auf Google Spreadsheets als normale Microsoft Excel-Dokumente ermöglicht.
Beispiel 1 (VBScript)
Dieses Beispiel zeigt die Grundlagen:
Set objExcel = CreateObject("GSpreadCOM.Application") objExcel.Visible = True objExcel.Workbooks.Add objExcel.Cells(1, 1).Value = "Test value" objExcel.ActiveWorkbook.Save "test.xls" objExcel.ActiveWorkbook.Close
Um dieses Skript mit Google Spreadsheet funktionieren zu lassen, müssen Sie Excel.Application in GSpreadCOM.Application ändern. Der Name test.xls wird der Titel des neuen Tabellenblattdokuments sein. Der übrige Code bleibt unverändert.
Beispiel 2 (VBScript)
Dies ist ein etwas komplizierteres Beispiel: Zugriff auf Zellen
Set objExcel = CreateObject("GSoreadCOM.Application") Set objWorkbook = objExcel.Workbooks.Open("test.xls") intRow = 1 Do Until objExcel.Cells(intRow,1).Value = "" WScript.Echo objExcel.Cells(intRow, 1).Value intRow = intRow + 1 Loop
Wieder, indem Sie GSpreadCOM.Application anstelle von Excel.Application und Tabellenblatt-Titel anstatt von test.xls verwenden, öffnen Sie das vorhandene Arbeitsblatt und lesen Sie den Inhalt daraus.
Beispiel 3 (C#)
Ein netter Nebeneffekt unserer Bibliothek ist, dass Sie sie auch in neuem Code leicht verwenden können. Zum Beispiel können Sie .NET Interop verwenden, um mit der Excel.Application-Schnittstelle zu arbeiten. Die einzige Änderung, die Sie brauchen, ist:
Type excelAppType = Type.GetTypeFromProgID("GSpreadCOM.Application"); var app = Activator.CreateInstance (excelAppType) as Microsoft.Office .Interop.Excel .Application;
Der gesamte übrige Code bleibt unverändert.
Beispiel 4
Lassen Sie uns eine einfache Tabelle mit Formeln und Formatvorlagen erstellen:
Set app = CreateObject("GSpreadCOM.Application")
app.Workbooks.Item("Example2").Worksheets.Item("Sheet1").Activate()
Set cells = app.Cells
' --- Data
cells(2, 2).Cells.Value = "Product"
For i = 1 To 4
cells(2, 2 + i).Cells.Value = "Quarter" & i
Next
cells(2, 7).Cells.Value = "Year"
cells(4, 2).Cells.Value = "Apples"
cells(5, 2).Cells.Value = "Pears"
cells(6, 2).Cells.Value = "Bananas"
cells(7, 2).Cells.Value = "Oranges"
cells(8, 2).Cells.Value = "Totals"
randomize
For row = 4 To 7
For col = 3 To 6
cells(row, col).Cells.Value = (int(rnd * 100) + 1) * 100
Next
Next
cells.Range("C8:G8").FormulaR1C1 = "=SUM(R[-4]C[0]:R[-1]C[0])"
cells.Range("G4:G7").Formula = "=SUM(C4:F4)"
' --- Styling
Set tableRange = cells.Range("B2:G8")
tableRange.Borders.Color = "white"
tableRange.NumberFormat = "$0,000" ' currency number format
cells.Range("B2:B3").Merge()
cells.Range("C2:C3").Merge()
cells.Range("D2:D3").Merge()
cells.Range("E2:E3").Merge()
cells.Range("F2:F3").Merge()
cells.Range("G2:G3").Merge()
Set headerRange = cells.Range("B2:G3")
Set footerRange = cells.Range("B8:G8")
' color #0066CC has index 23 in excel color palette
headerRange.Interior.ColorIndex = 23
footerRange.Interior.Color = "#0066CC"
' white color has index 2 in excel color palette
headerRange.Font.ColorIndex = 2
footerRange.Font.Color = "white"
headerRange.Font.Bold = True
footerRange.Font.Bold = True
footerRange.RowHeight = 30
oddRowColor = 14994616 ' RGB(184, 204, 228)
evenRowColor = 15853019 ' RGB(219, 229, 241)
cells.Range("B4:G4").Interior.Color = oddRowColor
cells.Range("B5:G5").Interior.Color = evenRowColor
cells.Range("B6:G6").Interior.Color = oddRowColor
cells.Range("B7:G7").Interior.Color = evenRowColor
WScript.Echo "Done"
Durch die Verwendung von GSpreadCOM.Application anstatt von Excel.Application und Tabellenblatt-Titel anstatt von test.xls öffnen Sie das vorhandene Tabellenblatt und lesen Sie den Inhalt daraus.
Unterstützte Funktionen und Eigenschaften
Die Bibliothek ist begrenzt und unterstützt nur eine bestimmte Teilmenge der Excel-Funktionen:
Object | Methods | Properties |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
| |
|
| |
|
| |
|
|
Google-Kontoeinstellungen
Standardmäßig verwendet GSpread.NET seine Beispielbezeichner. Wir empfehlen jedoch, sie in Ihre eigenen zu ändern. Um dies zu tun, führen Sie bitte die folgenden Schritte aus: Gehen Sie zu Ihrem Google Drive und erstellen Sie ein neues Skript (Wählen Sie „NEW > Mehr > Google Apps Script“):
Wenn es keinen solchen Menüpunkt gibt, können Sie „Weitere Apps verbinden“ wählen, im geöffneten Dialog nach „Apps Script“ suchen und dann eine Verbindung zu Google Apps Script herstellen.
Kopieren Sie den Skriptcode aus „<Projektordner>/src/GSpreadCOM/Resources/GoogleAppsScript.gs“ in die Code.gs, die Sie gerade erstellt haben. Sie können das Skript auch hier finden: https://scand.com/download/products/GSpread.NET/GoogleAppsScript.gs
Speichern Sie das Skript-Projekt z.B. unter dem Namen „GSpreadCOM_Script“:
Öffnen Sie dann das Menü „Veröffentlichen > Als ausführbare API-Datei bereitstellen…“
Beliebige Version einstellen, z.B. 1 und auf „Bereitstellen“ drücken:
Nun müssen wir das GSpreadCOM_Script Projekt konfigurieren.
Gehen Sie zu Google API Console https://console.developers.google.com und wählen Sie ein Projekt aus:
Gehen Sie zu „Übersicht > Google APIs“, suchen und aktivieren Sie Google Drive API:
und Google Apps Script Execution API:
Jetzt müssen wir Anmeldeinformationen erstellen:
Wählen Sie „OAuth client ID“:
Anwendungstyp – „Andere“ und drücken Sie „Erstellen“:
Kopieren Sie „client ID“ und „secret ID“ in GSpreadCOM.config
1 <?xml version="1.0" encoding="utf-8"?> 2 <config> 3 <user name="any random name"/> 4 <client id="52444250292-02d5nuj5osdf268h605djiukijd5i4m5.apps.googleusercontent.com" 5 secret="q2IOcXHThZ3LPc5nfFCcA_r"/;> 6 <script id="Mvi58b-XTLQOC7mbLFOvENmbpWLEH-geZ"/> 7 </config> 8
Sie können diese Werte als zweiten Parameter der Methode Application.MailLogon im Format „client_id|client_secret“ verwenden:
1 app.MailLogon("any random name", "52444250292- 2 02d5nuj5osdf268h605djiukijd5i4m5.apps.googleusercontent.com|q2IOcXH- 3 ThZ3LPc5nfFCcA_r", "Mx1qw1DNjz3vrzoYbLfc5H0sBksCqgDyL"); 4