0
我已经阅读了几个关于这个问题的问题(至少都是4岁,所以......),没有人接受这个答案。更新值后图表不会刷新(甚至是缓存的)
这里是更新我的图表方式:
/// <summary>Collection of values to push in the chart.</summary>
public IEnumerable<IEnumerable<string>> ChartValues { get; set; }
protected void UpdateChart()
{
var part = _word.MainDocumentPart.ChartParts.First();
SpreadsheetDocument spread = SpreadsheetDocument.Open(part.EmbeddedPackagePart.GetStream(), true);
var sheet = spread.WorkbookPart.Workbook.WorkbookPart.WorksheetParts.First().Worksheet;
var rowId = 2;
var cells = sheet.Descendants<XLS.Cell>();
// Change embedded Excel cell (/word/embeddings)
// Row by row mode : B2 to G2 ; B3 to G3 ; ...
foreach (var chartValue in ChartValues)
{
var columnId = 'B';
foreach (var cellValue in chartValue)
{
var cellId = string.Concat(columnId, rowId);
var cell = cells.First(c => c.CellReference == cellId);
cell.DataType = XLS.CellValues.Number;
cell.CellValue = new XLS.CellValue(cellValue);
columnId++;
}
rowId++;
}
spread.Close();
spread.Dispose();
// Change cached cells as well (/word/chart)
// Column by column mode : B2 to B8 ; C2 to C8 ; ...
var cachedValues = part.ChartSpace.Descendants<Charts.Values>();
int row = 0;
int col = 0;
foreach(var cachedValue in cachedValues)
{ // By column B ; C ; D
row = 0;
foreach(var value in cachedValue.Descendants<Charts.NumericValue>())
{ // By row ;
value.Text = ChartValues.ElementAt(row).ElementAt(col);
row++;
}
col++;
}
}
当打开生成的Word文档,图表仍然是空的。 当进入图表选项并点击“选择数据”>“确定”或“编辑数据”时,内容被刷新并显示所有数据...
任何想法为什么图表不刷新?