OpenXml入门----给Word文档添加表格

        下面将展示如何使用Openxm向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)));

            }

        }

    }

}

执行呈现结果如下:

OpenXml入门----给Word文档添加表格

 

你可能感兴趣的:(word)