前面設定請看
[C# + Google SpreadSheet] (一)、建立Google OAuth 2.0
- 基本上建議使用VS2012以上的版本,因 NuGet 在2012以上的版本是以內建安裝,
所以直接至 tool ->NuGet 封裝管理員->套件管理器主控台
- 下方會出現 套件管理器主控台
- 輸入 PM> Install-Package Google.Apis.Sheets.v4
參考 : 使用NuGet安裝、移除、更新套件 - 在[C# + Google SpreadSheet] (一)、建立Google OAuth 2.0最後有下載 json
檔案,將此加入專案
(建議名稱為英文小寫開頭,這範例為client_secret.json)
- 再給範例程式之前,先注意幾點,皆於範例程式中
- new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
client_secret.json,為下載的名稱,不同則須修改 - spreadsheetId,為google spreadsheet的網址 : /d/XXXXX/
Ex: spreadsheets/d/1kLk9VslDYn0nhZpJZXd3tErt1f2gzG-2eSJWbrh2piU/ - range,規則為 "頁籤名稱!選取範圍"
例如您的標籤為 123 ,然後表格內容是A1~F3
則 range = "123 !A1:F3"; - 若你Google尚未建立,則自行去建立,沒東西怎可能抓得到內容呢?
範例程式&設計頁面
- 設計頁面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System.IO;
using System.Threading;
namespace GoogleSpreadsheetTest
{
public partial class Form1 : Form
{
static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
//應用程式的名字需要英文
static string ApplicationName = "Get Google SheetData with Google Sheets API";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SpreadSheet();
}
private void SpreadSheet() {
UserCredential credential;
using (var stream =
//輸出檔名稱Ex."client_secret.json"
new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
//spreadsheetId,為google spreadsheet的網址 : / d / XXXXX /
//Ex: https://docs.google.com/spreadsheets/d/1kLk9VslDYn0nhZpJZXd3tErt1f2gzG-2eSJWbrh2piU/edit#gid=0
String spreadsheetId = "1kLk9VslDYn0nhZpJZXd3tErt1f2gzG-2eSJWbrh2piU";
//"頁籤名稱!選取範圍"
String range = "test!A1:F6";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(spreadsheetId, range);
// Prints the names and majors of students in a sample spreadsheet:
ValueRange response = request.Execute();
IList<IList<Object>> values = response.Values;
richTextBox1.Text = "";
if (values != null && values.Count > 0)
{
foreach (var row in values)
{
//第一種寫法 - 總和累計
foreach (var col in row)
{
richTextBox1.Text += col+"\t";
}
//或是第二種寫法 - 選取部分
//richTextBox1.Text = Convert.ToString(row[0])+ Convert.ToString(row[1])+Convert.ToString(row[2]);
}
}
else
{
richTextBox1.Text = "No data found.";
}
}
private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text = "";
}
}
}
參考資料
[.NET]如何取得 Google Spreadsheet 中各個 sheet 資訊
Google Sheets API v4 使用 C# (1) --- 讀取Google Spreadsheet
[.NET]如何取得 Google Spreadsheet 中各個 sheet 資訊
Google Sheets API v4 使用 C# (1) --- 讀取Google Spreadsheet
沒有留言:
張貼留言