软件编程
位置:首页>> 软件编程>> C#编程>> C#采用OpenXml给Word文档添加表格

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

作者:shichen2014  发布时间:2023-03-10 14:07:13 

标签:C#,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#采用OpenXml给Word文档添加表格

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com