当前位置: 移动技术网 > IT编程>开发语言>c# > C#采用OpenXml给Word文档添加表格

C#采用OpenXml给Word文档添加表格

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了c#采用openxml给word文档添加表格的方法,是非常实用的操作技巧。分享给大家供大家参考。具体分析如下: 这里将展示如何使用openxml向word添

本文实例讲述了c#采用openxml给word文档添加表格的方法,是非常实用的操作技巧。分享给大家供大家参考。具体分析如下:

这里将展示如何使用openxml向word添加表格. 代码中表头和数据我们用的同一个tablerow来添加,其实可以通过tableheader来,其实都一样。后面我们还会进一步给出如何设置单元格样式。表头那一行可以自己通过设置样式来控制

示例代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using documentformat.openxml;
using documentformat.openxml.packaging;
using documentformat.openxml.wordprocessing;

namespace addtabletoword
{
  public class program
  {
    public static void main(string[] args)
    {
      list<string[]> lstdata = new list<string[]>() { new string[] { "1", "2", "3" }, new string[] { "3", "2", "1" } };
      string[] headerarray = new string[] { "a", "b", "c" };
      addtable("test.docx", lstdata, headerarray);
    }

    /// <summary>
    /// word里面添加table
    /// </summary>
    /// <param name="wordpath">word文件路径</param>
    /// <param name="lstdata">数据</param>
    /// <param name="headerarray">表头</param>
    public static void addtable(string wordpath, list<string[]> lstdata, string[] headerarray)
    {
      using (wordprocessingdocument doc = wordprocessingdocument.open(wordpath, true))
      {
        tablegrid grid = new tablegrid();
        int maxcolumnnum = lstdata.select(x => x.count()).max();
        for (int index = 0; index < maxcolumnnum; index++)
        {
          grid.append(new tablegrid());
        }

        // 设置表格边框
        tableproperties tblprop = new tableproperties(
        new tableborders(
        new topborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 },
        new bottomborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 },
        new leftborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 },
        new rightborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 },
        new insidehorizontalborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 },
        new insideverticalborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }
        )
        );

        table table = new table();
        table.append(tblprop);

        // 添加表头. 其实有tableheader对象的,小弟用不来.
        tablerow headerrow = new tablerow();
        foreach (string headerstr in headerarray)
        {
          tablecell cell = new tablecell();
          cell.append(new paragraph(new run(new text(headerstr))));
          headerrow.append(cell);
        }
        table.append(headerrow);

        // 添加数据
        foreach (string[] rowarray in lstdata)
        {
          tablerow row = new tablerow();
          foreach (string strcell in rowarray)
          {
            tablecell cell = new tablecell();
            cell.append(new paragraph(new run(new text(strcell))));
            row.append(cell);
          }
          table.append(row);
        }

        doc.maindocumentpart.document.body.append(new paragraph(new run(table)));
      }
    }
  }
}

执行呈现结果如下:

希望本文所述对大家的c#程序设计有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网