/// <summary>
/// 新建一个表格
/// </summary>
/// <param name="_slide">PPT的页</param>
/// <param name="tableContents">取html中的表格</param>
private void insertTable(POWERPOINT._Slide _slide, string tableContents)
{
shapes = _slide.Shapes;
string[][] _strContents = null;
string ContentsVaule = string.Empty;
int xCount = 0;
int yCount = 0;
xCount = XYConut(tableContents, "TR");//行
yCount = XYConut(tableContents, "TD");//列
_strContents = strContents(tableContents);
xCount = _strContents.Length;
yCount = _strContents[0].Length;
shape = shapes.AddTable(xCount, yCount, -1, 150, -1, -1);
table = shape.Table;
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
//table.Cell(i + 1, j + 1).Shape.TextFrame.TextRange.Font.Size = 10;
ContentsVaule=_strContents[i][j].ToString();
//if (ContentsVaule == "合并行标识")
//{
// ContentsVaule = string.Empty;
//}
if (ContentsVaule.IndexOf("owSpan") >= 0)
{
table.Cell(i + 1, j + 1).Merge(shape.Table.Cell(i + 2, j + 1));//合并单元格(行合并)
}
table.Cell(i + 1, j + 1).Shape.TextFrame.TextRange.Text = ContentsVaule;//Contents[i ,j].ToString();
}
}
//shape.Table.Rows.Add(1); //在表格之前新增一行
//shape.Table.Columns.Add(1); //在表格之前新增一列
//shape.Table.Cell(3, 1).Split(2, 2); //分割单元格
//shape.Table.Cell(2, 1).Merge(shape.Table.Cell(3, 1)); //合并单元格(行合并)
//shape.Table.Cell(1, 1).Shape.TextFrame.TextRange.Text = "项目名称";
//shape.Table.Cell(2, 1).Shape.TextFrame.TextRange.Text = "防城港项目";
//shape.Table.Cell(1, 2).Merge(shape.Table.Cell(1, 1)); //合并单元格(列合并)
}
/// <summary>
/// 返回多维数组,以方便给PPT的表格赋值
/// </summary>
/// <param name="tableContents">从html页面处理后的table</param>
/// <returns></returns>
private string[][] strContents(string tableContents)
{
tableContents = tableContents.Replace((char)10, ' ').Replace((char)13, ' ').Replace(" ", "");//去掉换行符
int insertAt = 0;
insertAt = tableContents.IndexOf("</TD></TR><TR>");
if (tableContents.IndexOf("rowSpan") >= 0)
{
//tableContents = tableContents.Replace("#", "</TD><TD>");
tableContents = tableContents.Insert(insertAt + 14, "<TD>合并行标识</TD>");
}
tableContents = tableContents.Replace("<TR><TD>", "r");//去掉空格并替换为r
tableContents = tableContents.Replace("</TD><TD>", "d"); //替换为d
//tableContents = PPTOperation.WipeOffTableHTML(tableContents);
tableContents = tableContents.Replace("</TD></TR>", "");
tableContents = tableContents.Remove(0, 2);//去掉第一个‘r’
string[] arry = tableContents.Split('r');
string[][] arrylist = new string[arry.Length][];
for (int i = 0; i < arry.Length; i++)
{
string[] tmp = arry[i].Split('d');
arrylist[i] = new string[tmp.Length];
int j = 0;
foreach (string s in tmp)
{
if (s != string.Empty)
arrylist[i][j++] = s;
}
arrylist[i] = (string[])Redim(arrylist[i], j);
}
return arrylist;
}