首页 > 编程 > C# > 正文

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

2020-01-24 02:23:39
字体:
来源:转载
供稿:网友

本文实例讲述了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#程序设计有所帮助

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表