zoukankan      html  css  js  c++  java
  • 关于《openxml word》 创建表格及添加样式,那些事

    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);

    // 添加表头,《一》简单模式
    //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);

    //添加表头,《二》复杂样式,加入样式
    TableRow headerRow = new TableRow();
    foreach (string headerStr in headerArray)
    {
    TableCell cell = new TableCell();
    var paragraphText = new Paragraph();

    //垂直居中显示
    var tcProperties = new TableCellProperties();
    var tcvAligin = new TableCellVerticalAlignment { Val = TableVerticalAlignmentValues.Center };
    tcProperties.Append(tcvAligin);
    cell.AppendChild(tcProperties);
    var Pproperties = new ParagraphProperties();
    var jc = new Justification { Val = JustificationValues.Center };
    Pproperties.AppendChild(jc);


    //设置字体样式
    RunProperties runproperties = new RunProperties();//属性
    RunFonts fonts = new RunFonts() { EastAsia = "方正兰亭黑简" };//设置字体
    FontSize size = new FontSize() { Val = "18" };//设置字体大小
    DocumentFormat.OpenXml.Wordprocessing.Color color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "black" };//设置字体颜色

    runproperties.Append(color);
    runproperties.Append(size);
    runproperties.Append(fonts);
    //runproperties.Append(tcProperties);

    Run run = new Run();
    //run.Append(tcProperties);
    //run.Append(Pproperties);
    run.Append(runproperties);
    run.Append(new Text(headerStr));
    paragraphText.Append(run);
    paragraphText.Append(Pproperties);

    cell.AppendChild(paragraphText);
    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)));
    }
    }
    }
    }

  • 相关阅读:
    闽江学院2015-2016学年下学期《软件测试》课程-第五次博客作业
    在Swift中应用Grand Central Dispatch(下)
    在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客
    Asp.net mvc 框架揭秘之Asp.net +Mvc简介
    JavaScript数组
    网页校验
    删除弹出提示框_MVC
    业务体会
    判断数组值是否有重复
    sql
  • 原文地址:https://www.cnblogs.com/threestars/p/10468780.html
Copyright © 2011-2022 走看看