Ready to get started?

Download a free trial of the Google Sheets Data Provider to get started:

 Download Now

Learn more:

Google Sheets Icon Google Sheets ADO.NET Provider

Easily connect .NET applications with real-time data from spreadsheets stored in Google Docs. Use Google Sheets to manage the data that powers your applications.

DataBind Google Sheets Data to the DevExpress Data Grid



Use the CData ADO.NET Provider for Google Sheets with the DevExpress Windows Forms and Web controls to provide Google Sheets data to a chart.

The ADO.NET Provider for Google Sheets by CData incorporates conventional ADO.NET data access components compatible with third-party controls. You can adhere to the standard ADO.NET data binding procedures to establish two-way access to real-time data through UI controls. This article will demonstrate the utilization of CData components for data binding with DevExpress UI Controls (Windows Forms and Web controls), specifically binding to a chart that visualizes live data.

You can connect to a spreadsheet by providing authentication to Google and then setting the Spreadsheet connection property to the name or feed link of the spreadsheet. If you want to view a list of information about the spreadsheets in your Google Drive, execute a query to the Spreadsheets view after you authenticate.

ClientLogin (username/password authentication) has been officially deprecated since April 20, 2012 and is now no longer available. Instead, use the OAuth 2.0 authentication standard. To access Google APIs on behalf on individual users, you can use the embedded credentials or you can register your own OAuth app.

OAuth also enables you to use a service account to connect on behalf of users in a Google Apps domain. To authenticate with a service account, you will need to register an application to obtain the OAuth JWT values.

See the Getting Started chapter in the help documentation to connect to Google Sheets from different types of accounts: Google accounts, Google Apps accounts, and accounts using two-step verification.

Windows Forms Controls

The code below shows how to populate a DevExpress chart with Google Sheets data. The GoogleSheetsDataAdapter binds to the Series property of the chart control. The Diagram property of the control defines the x- and y-axes as the column names.

using (GoogleSheetsConnection connection = new GoogleSheetsConnection( "Spreadsheet=MySheet;InitiateOAuth=GETANDREFRESH")) { GoogleSheetsDataAdapter dataAdapter = new GoogleSheetsDataAdapter( "SELECT Shipcountry, SUM(OrderPrice) FROM Orders GROUP BY Shipcountry", connection); DataTable table = new DataTable(); dataAdapter.Fill(table); DevExpress.XtraCharts.Series series = new DevExpress.XtraCharts.Series(); chartControl1.Series.Add(series); series.DataSource = table; series.ValueDataMembers.AddRange(new string[] { "OrderPrice" }); series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Qualitative; series.ArgumentDataMember = "Shipcountry"; series.ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical; chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; ((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true; }

Web Controls

The code below shows how to populate a DevExpress Web control with Google Sheets data. The GoogleSheetsDataAdapter binds to the Series property of the chart; the Diagram property defines the x- and y-axes as the column names.

using DevExpress.XtraCharts; using (GoogleSheetsConnection connection = new GoogleSheetsConnection( "Spreadsheet=MySheet;InitiateOAuth=GETANDREFRESH")) { GoogleSheetsDataAdapter GoogleSheetsDataAdapter1 = new GoogleSheetsDataAdapter("SELECT Shipcountry, SUM(OrderPrice) FROM Orders GROUP BY Shipcountry", connection); DataTable table = new DataTable(); GoogleSheetsDataAdapter1.Fill(table); DevExpress.XtraCharts.Series series = new Series("Series1", ViewType.Bar); WebChartControl1.Series.Add(series); series.DataSource = table; series.ValueDataMembers.AddRange(new string[] { "OrderPrice" }); series.ArgumentScaleType = ScaleType.Qualitative; series.ArgumentDataMember = "Shipcountry"; series.ValueScaleType = ScaleType.Numerical; ((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true; }