我按照这些简单的步骤在现有的 google 电子表格中创建了一个简单的柱形图。
- 获取工作表 ID
var sheetId = GetSheetId(service, spreadsheetId, googleSheetParameters.SheetName);
- 创建基本图表轴列表
IList<BasicChartAxis> basicChartAxes = new List<BasicChartAxis>();
basicChartAxes.Add(
new BasicChartAxis()
{
Position = "BOTTOM_AXIS",
Title = xName
});
basicChartAxes.Add(
new BasicChartAxis()
{
Position = "LEFT_AXIS",
Title = yName
});
-
为 x 和 y 轴创建网格范围(例如:前 10 行)
//B1-B10
IList<GridRange> yRanges = new List<GridRange>();
yRanges.Add(
new GridRange()
{
SheetId = sheetId,
StartRowIndex = 0,
EndRowIndex = 9,
StartColumnIndex = 1,
EndColumnIndex = 2
});
//A1-A10
IList<GridRange> xRanges = new List<GridRange>();
xRanges.Add(
new GridRange()
{
SheetId = sheetId,
StartRowIndex = 0,
EndRowIndex = 9,
StartColumnIndex = 0,
EndColumnIndex = 1
});
- 创建系列和域
IList<BasicChartSeries> basicChartSeries = new List<BasicChartSeries>();
basicChartSeries.Add(new BasicChartSeries()
{
Series = new ChartData()
{
SourceRange = new ChartSourceRange()
{
Sources = yRanges
}
},
TargetAxis = "LEFT_AXIS"
});
IList<BasicChartDomain> basicChartDomains = new List<BasicChartDomain>();
basicChartDomains.Add(new BasicChartDomain()
{
Domain = new ChartData()
{
SourceRange = new ChartSourceRange()
{
Sources = xRanges
}
}
});
- 创建 ChartSpec
var chartSpec = new ChartSpec()
{
Title = googleSheetParameters.SheetName,
BasicChart = new BasicChartSpec()
{
ChartType = "COLUMN",
LegendPosition = "BOTTOM_LEGEND",
Axis = basicChartAxes,
Domains = basicChartDomains,
Series = basicChartSeries,
HeaderCount = 1
}
};
- 创建并完成图表请求
BatchUpdateSpreadsheetRequest chartRequest = new BatchUpdateSpreadsheetRequest();
var addChartRequest = new AddChartRequest
{
Chart = new EmbeddedChart()
{
Position = new EmbeddedObjectPosition()
{
//if you use an existing Sheet inside Spredsheet
OverlayPosition = new OverlayPosition
{
//set position inside existing sheet
AnchorCell = new GridCoordinate()
{
SheetId = sheetId,
ColumnIndex = 2,
RowIndex = 0
}
}
},
Spec = chartSpec
}
};
chartRequest.Requests = new List<Request>();
chartRequest.Requests.Add(new Request() { AddChart = addChartRequest });
var batchUpdateReq = service.Spreadsheets.BatchUpdate(chartRequest, spreadsheetId).Execute();