如何使用C#在Google电子表格上创建图表?

如何使用C#在Google电子表格上创建图表?,c#,google-sheets-api,C#,Google Sheets Api,经过努力,我终于创建了一个C程序,能够从谷歌电子表格中读取、添加、更新和删除单元格。现在我想用我在那里的数据创建一个图表,但我不能这样做 我对此做了很多研究。我发现所有的东西(我认为)都需要这样做,我发现了一些使用python和javascript的例子,但由于某种原因,我无法将其组合到C#中 有人这样做过吗 答复: 为了创建图表并将其添加到Google工作表中,需要向包含图表信息的API发出batchUpdate请求 详细说明: 您需要做的第一件事是构建请求主体,指定您需要的图表的所有相关部分

经过努力,我终于创建了一个C程序,能够从谷歌电子表格中读取、添加、更新和删除单元格。现在我想用我在那里的数据创建一个图表,但我不能这样做

我对此做了很多研究。我发现所有的东西(我认为)都需要这样做,我发现了一些使用python和javascript的例子,但由于某种原因,我无法将其组合到C#中

有人这样做过吗

答复: 为了创建图表并将其添加到Google工作表中,需要向包含图表信息的API发出
batchUpdate
请求

详细说明: 您需要做的第一件事是构建请求主体,指定您需要的图表的所有相关部分。这包括图表的类型(柱状图或饼图)、轴、数据源、图表的位置等。有关这方面的完整信息可在中找到

一旦构建了请求对象,就可以通过构造包含先前构造的所有信息的
BatchUpdateRequest
向API发出
BatchUpdateRequest
请求

构建请求: 请求是一个列表对象,在添加到
BatchUpdateSpreadsheetRequest
对象之前,需要先构建该对象:

var addChartRequest=new addChartRequest();
addChartRequest.ChartData=//您的数据
addChartRequest.ChartSourceRange=//您的范围
addChartRequest.ChartSpec=//您的规范
//我已经在下面列出了所有这些课程的参考资料,请查看
//并添加所需的结构
BatchUpdateSpreadsheetRequest chartRequest=新的BatchUpdateSpreadsheetRequest();
chartRequest.Requests=新列表();
chartRequest.Requests.Add(新请求
{
//按照柱状图或饼图的结构在此处生成列表请求
});
和类似,但需要稍有不同的参数

进行API调用: 构建请求本身后,需要调用
batchUpdate
方法:

var ssID=“”
var batchUpdateReq=service.Spreadsheets.BatchUpdate(chartRequest,ssID)
batchUpdateRequest.Execute();
我希望这对你有帮助

参考资料:
  • :
  • :

我按照这些简单的步骤在现有的谷歌电子表格中创建一个简单的柱状图

  • 获取工作表id
  • var sheetId=GetSheetId(服务、电子表格ID、googleSheetParameters.SheetName);
    
  • 创建基本图表轴列表
  • IList basicChartAxes=new List();
    基本坐标轴。添加(
    新BasicChartAxis()
    {
    Position=“底部_轴”,
    Title=xName
    });
    基本坐标轴。添加(
    新BasicChartAxis()
    {
    Position=“左_轴”,
    Title=yName
    });
    
  • 为x轴和y轴创建栅格范围(例如:前10行)
  • //B1-B10
    IList yRanges=新列表();
    Y范围。添加(
    新GridRange()
    {
    SheetId=SheetId,
    StartRowIndex=0,
    EndRowIndex=9,
    StartColumnIndex=1,
    EndColumnIndex=2
    });
    //A1-A10
    IList xRanges=新列表();
    xRanges.Add(
    新GridRange()
    {
    SheetId=SheetId,
    StartRowIndex=0,
    EndRowIndex=9,
    StartColumnIndex=0,
    EndColumnIndex=1
    });
    
  • 创建系列和域
  • IList basicChartSeries=新列表();
    添加(新的basicChartSeries()
    {
    系列=新图表数据()
    {
    SourceRange=新图表SourceRange()
    {
    源=Y范围
    }
    },
    TargetAxis=“左_轴”
    });
    IList basicChartDomains=新列表();
    添加(新的BasicChartDomain()
    {
    域=新图表数据()
    {
    SourceRange=新图表SourceRange()
    {
    源=xRanges
    }
    }
    });
    
  • 创建图表规范
  • var chartSpec=new chartSpec()
    {
    Title=googleSheetParameters.SheetName,
    BasicChart=新的BasicChartSpec()
    {
    ChartType=“COLUMN”,
    LegendPosition=“底部\图例”,
    轴=基本轴,
    域=基本域,
    系列=基本系列,
    人头数=1
    }
    };
    
  • 创建并完成图表请求
  • BatchUpdateSpreadsheetRequest chartRequest=新的BatchUpdateSpreadsheetRequest();
    var addChartRequest=新的addChartRequest
    {
    图表=新的嵌入式图表()
    {
    位置=新的EmbeddedObjectPosition()
    {
    //如果在Spredsheet中使用现有图纸
    叠加位置=新叠加位置
    {
    //在现有图纸内设置位置
    AnchorCell=新网格坐标()
    {
    SheetId=SheetId,
    ColumnIndex=2,
    行索引=0
    }
    }
    },
    规格=图表规格
    }
    };
    chartRequest.Requests=新列表();
    添加(新请求(){AddChart=addChartRequest});
    var batchUpdateReq=service.Spreadsheets.BatchUpdate(chartRequest,spreadsheetId).Execute();
    
    为什么要投否决票?你能提供一些反馈或要求澄清吗?你能提供你尝试过的代码并解释什么不起作用吗?有关于如何创建图表的信息,需要作为batchUpdate的主体发送。我还没有为图表编写任何代码,否则我会附加它。只是阅读并熟悉可能的方法,但正如我所说,我没有运行任何方法,因为我真的不知道/无法理解如何做的结构。这取决于你想制作什么样的图表,什么样的数据