2017-04-22 24 views
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文書を開くと、グラフは空のままです。 グラフのオプションを選択し、[データの選択]> [OK]または[データの編集]をクリックすると、コンテンツが最新表示され、すべてのデータが表示されます...

チャートがリフレッシュされない理由はありますか?

答えて

1

私自身が答えたのは、ChartSpaceの変更を保存することだけでした。

追加:

part.ChartSpace.Save(); 

はトリックをい、チャートがうまく更新されます。

関連する問題