在 PowerPoint 中更新图表数据
Update Chart data in PowerPoint
我正在通过加载模板和更新数据并另存为新副本来创建 PowerPoint。为此,我使用 GemBox.Presentation 和 GemBox.SpreadSheet。我可以使用电子表格访问图表数据,但我不确定如何更新它。
以下是我如何从模板幻灯片访问图表。
var chart = ((GraphicFrame)currentSlide.Content.Drawings[0]).Chart;
var stackedColumn = (GemBox.Spreadsheet.Charts.ColumnChart)chart.ExcelChart;
我尝试通过转换为列表来更新数据,但它仍然没有更新。
foreach (var item in data)
{
var seriesItem = data;
var valueList = item.Values.Cast<int>().Select(x => x).ToList();
// values to update in chart
List<int> myValues = new List<int>(new int[] { 1, 2});
for (int v = 0; v < valueList.Count(); v++)
{
valueList[v] = myValues[v];
}
}
我也看到了这个示例 https://www.gemboxsoftware.com/presentation/examples/powerpoint-charts/412 来更新图表,但是这会添加系列但不会更新当前数据。
如果您可以分享是否有任何支持可用于此组件以执行更新图表数据,我们将不胜感激。谢谢
我已成功更新电子表格中与 powerpoint 图表关联的数据。
Class 名为 ChartSeries 的方法包含名为 SetValues() 的方法,该方法将设置图表系列值。
有两种方法可以使用此方法,因为它需要 IEnumerable
和 Object []
作为参数,如下所示。
public void SetValues(IEnumerable values)
public void SetValues(params object[] values)
这是我访问该值并更新它的方式。
foreach (var item in data)
{
var seriesItem = data;
foreach (var value in seriesItem)
{
if (value.DisplayName == "[Open]")
{
value.SetValues(50,25);
}
}
}
一种方法是使用 ChartSeries.SetValues
方法之一,如上一个答案所述。
另一种方法是更新带下划线的 Excel 单元格。
例如,在您链接到的那个例子中,您可以这样做:
var lineChart = (LineChart)chart.ExcelChart;
var lineSeries = lineChart.Series[0];
// Get series source cells.
string[] cellsReference = lineSeries.ValuesReference.Split('!');
var cells = lineChart.Worksheet.Parent.Worksheets
.First(w => w.Name == cellsReference[0].Trim('\''))
.Cells.GetSubrange(cellsReference[1]);
// Update cells with doubled values.
foreach (var cell in cells)
cell.SetValue(cell.DoubleValue * 2);
我正在通过加载模板和更新数据并另存为新副本来创建 PowerPoint。为此,我使用 GemBox.Presentation 和 GemBox.SpreadSheet。我可以使用电子表格访问图表数据,但我不确定如何更新它。
以下是我如何从模板幻灯片访问图表。
var chart = ((GraphicFrame)currentSlide.Content.Drawings[0]).Chart;
var stackedColumn = (GemBox.Spreadsheet.Charts.ColumnChart)chart.ExcelChart;
我尝试通过转换为列表来更新数据,但它仍然没有更新。
foreach (var item in data)
{
var seriesItem = data;
var valueList = item.Values.Cast<int>().Select(x => x).ToList();
// values to update in chart
List<int> myValues = new List<int>(new int[] { 1, 2});
for (int v = 0; v < valueList.Count(); v++)
{
valueList[v] = myValues[v];
}
}
我也看到了这个示例 https://www.gemboxsoftware.com/presentation/examples/powerpoint-charts/412 来更新图表,但是这会添加系列但不会更新当前数据。 如果您可以分享是否有任何支持可用于此组件以执行更新图表数据,我们将不胜感激。谢谢
我已成功更新电子表格中与 powerpoint 图表关联的数据。
Class 名为 ChartSeries 的方法包含名为 SetValues() 的方法,该方法将设置图表系列值。
有两种方法可以使用此方法,因为它需要 IEnumerable
和 Object []
作为参数,如下所示。
public void SetValues(IEnumerable values)
public void SetValues(params object[] values)
这是我访问该值并更新它的方式。
foreach (var item in data)
{
var seriesItem = data;
foreach (var value in seriesItem)
{
if (value.DisplayName == "[Open]")
{
value.SetValues(50,25);
}
}
}
一种方法是使用 ChartSeries.SetValues
方法之一,如上一个答案所述。
另一种方法是更新带下划线的 Excel 单元格。
例如,在您链接到的那个例子中,您可以这样做:
var lineChart = (LineChart)chart.ExcelChart;
var lineSeries = lineChart.Series[0];
// Get series source cells.
string[] cellsReference = lineSeries.ValuesReference.Split('!');
var cells = lineChart.Worksheet.Parent.Worksheets
.First(w => w.Name == cellsReference[0].Trim('\''))
.Cells.GetSubrange(cellsReference[1]);
// Update cells with doubled values.
foreach (var cell in cells)
cell.SetValue(cell.DoubleValue * 2);