2013-12-14 55 views
0

我正在從數據庫更新powerpoint 2010幻燈片(形狀的msotable類型)上的表的數據。我正在使用chart.Refresh成功刷新包含圖表(msochart)的幻燈片母版。我想爲表格類型做同樣的事情。但是沒有刷新表的方法,並且在主幻燈片視圖上的成功更新之後,我的幻燈片母版視圖不會刷新(更新)。 我正在使用C#4.0 interop for office 2010.
任何想法如何刷新表幻燈片主視圖? http://office.microsoft.com/en-001/powerpoint-help/what-is-a-slide-master-HA010280572.aspx刷新幻燈片主視圖

回答

0

找到了解決辦法。當沒有刷新的方法時,我做一個黑客: sh.Width = sh.Width + 1; sh.Width = sh.Width - 1;

public void UpdateTable(Shape sh, System.Data.DataTable dt) 
    { 
     try 
     { 
      //Supprimer toutes les lignes existantes 
      if (sh.Table.Rows.Count >= 3) 
      { 
       int rowCount = sh.Table.Rows.Count; 
       for (int i = 3; i <= rowCount; i++) 
       { 
        sh.Table.Rows[sh.Table.Rows.Count].Delete(); 
       } 

       //Vider le contenu de la première ligne 
       for (int j = 1; j < sh.Table.Columns.Count; j++) 
       { 
        sh.Table.Cell(2, j).Shape.TextFrame.TextRange.Text = ""; 
       } 
      } 

      //Parcourir les lignes 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       sh.Table.Rows.Add(sh.Table.Rows.Count); 
       //Parcourir les colonnes 
       for (int j = 0; j < dt.Columns.Count; j++) 
       { 
        sh.Table.Cell(i + 2, j + 1).Shape.TextFrame.TextRange.Text = dt.Rows[i][j].ToString(); 
       } 
      } 
      sh.Table.Rows[sh.Table.Rows.Count].Delete(); 

      sh.Width = sh.Width + 1; 
      sh.Width = sh.Width - 1; 

      Marshal.ReleaseComObject(sh); 
     } 
     catch (Exception exp) 
     { 
      Logger.Error(exp); 
     } 

    }