我正在从数据库更新powerpoint 2010幻灯片(可自动调整的形状类型)上的表格数据。我正在使用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 :(得分: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);
}
}