GSpread.NET

Google Spreadsheets .NET API

Wolkenhintergrundbild in der Hero-Sektion

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    
Handbuch

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:

GSpread.NET
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:

ObjectMethodsProperties
  • Excel.Application
  • MailLogon
  • Quit
  • Save
  • SaveWorkspace
  • ActiveCell
  • ActiveSheet
  • ActiveWorkbook
  • Cells
  • Columns
  • DecimalSeparator
  • Range
  • Rows
  • Sheets
  • ThousandsSeparator
  • Workbooks
  • Worksheets
  • Excel.Workbooks
  • Add – templates will not be supported
  • Open – limited options set will be supported to open only google spreadsheets by name
  • Close
  • Count
  • Item
  • Excel.Workbook
  • Activate
  • Close
  • ExportAsFixedFormat – only PDF format will be supported (may be excluded from 1st version)
  • Save
  • SaveAs – only google spreadsheet format is supported)
  • ActiveSheet
  • Application
  • FullName
  • Name
  • Sheets
  • Worksheets
  • Excel.Worksheets
  • Add – only Worksheet can be added
  • Count
  • Item
  • Excel.Worksheet
  • Activate
  • Delete
  • Application
  • Cells
  • Columns
  • Name
  • Range
  • Rows
  • Excel.Range
  • BorderAround
  • Clear
  • ClearContents
  • ClearFormats
  • Insert
  • Merge
  • UnMerge
  • Address
  • Borders
  • Cells
  • Column
  • Columns
  • ColumnWidth – implemented in pixels
  • Count
  • EntireColumn
  • EntireRow
  • Font
  • Formula
  • FormulaR1C1
  • HorizontalAlignment
  • Interior
  • Item
  • NumberFormat
  • Offset
  • Range
  • Row
  • Rows
  • RowHeight
  • Style
  • Text
  • Value
  • Value2
  • VerticalAlignment
  • Worksheet
  • WrapText
  • Excel.Style
  • Borders
  • Font
  • HorizontalAlignment
  • Interior
  • NumberFormat
  • VerticalAlignment
  • WrapText
  • Excel.Font
  • Bold
  • Color
  • ColorIndex
  • Italic
  • Size
  • Strikethrough
  • Underline
  • Excel.Interior
  • Color
  • ColorIndex
  • Excel.Borders
  • Color
  • ColorIndex
  • Count
  • Item
  • LineStyle
  • Weight
  • Excel.Border
  • Color
  • ColorIndex
  • LineStyle
  • Weight

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“):

GSpread.NET

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.

GSpread.NET

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

GSpread.NET

Speichern Sie das Skript-Projekt z.B. unter dem Namen „GSpreadCOM_Script“:

GSpread.NET

Öffnen Sie dann das Menü „Veröffentlichen > Als ausführbare API-Datei bereitstellen…“

GSpread .NET

Beliebige Version einstellen, z.B. 1 und auf „Bereitstellen“ drücken:

GSpread.NET
GSpread.NET

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:

GSpread.NET

Gehen Sie zu „Übersicht > Google APIs“, suchen und aktivieren Sie Google Drive API:

GSpread.NET
GSpread.NET

und Google Apps Script Execution API:

GSpread.NET
GSpread.NET

Jetzt müssen wir Anmeldeinformationen erstellen:

GSpread.NET

Wählen Sie „OAuth client ID“:

GSpread.NET

Anwendungstyp – „Andere“ und drücken Sie „Erstellen“:

GSpread.NET
GSpread.NET

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    

Herunterladen

Wir glauben an Freiheit! Dieses Produkt wird „AS IS“ gemäß den Bedingungen der GNU GPL v3 bereitgestellt. Setup, sowohl 32 als auch 64 Bit: GSpread.NET-1.0-setup.exe Sie können auch alle spezifischen Funktionen anfordern, die Sie benötigen – bestellen Sie unsere kundenspezifischen Softwareentwicklungsdienste, die schnell und kostengünstig sind.

Verwandte Produkte