zoukankan      html  css  js  c++  java
  • 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)));
                }
            }
        }
    }

    执行呈现结果如下:

    Frank.Zhang
    座右铭: 因为没有翅膀,所以要努力奔跑
    简介: 成都90后IT民工,熟悉Vue,.Net,Hybrid开发。对我有兴趣吗? 请点击我
  • 相关阅读:
    游戏玩家 专有名词 All In One
    Xbox 无线控制器详细使用说明图解教程 All In One
    leetcode online interview All In One
    vcharts custom tooltip All In One
    kaggle All In One
    elpopover ::after style overwrite bug All In One
    webpack 插件 All In One
    js inplace algorithm All In One
    leetcode 面试必刷的算法 100 题 All In One
    vcharts no data All In One
  • 原文地址:https://www.cnblogs.com/FourLeafCloverZc/p/3978132.html
Copyright © 2011-2022 走看看