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

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

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

标签:C#,OpenXml,Word
0
投稿

猜你喜欢

  • C#利用Openxml读取Excel数据实例

    2021-05-27 18:27:06
  • C#语言主要特性总结

    2021-07-16 07:59:43
  • 深入c# GDI+简单绘图的具体操作步骤(三)

    2021-11-27 13:19:55
  • 使用Java开发实现OAuth安全认证的应用

    2023-07-16 13:55:44
  • android仿直播圆点加载效果

    2023-11-13 07:11:10
  • 利用Java自写一个生成ID的工具类

    2023-04-24 04:10:08
  • spring boot中多线程开发的注意事项总结

    2022-03-14 19:20:07
  • Android开发Compose框架使用开篇

    2023-06-08 19:14:19
  • Java并发编程预防死锁过程详解

    2023-11-09 15:33:58
  • java多线程抓取铃声多多官网的铃声数据

    2023-12-18 23:20:05
  • Java提取2个集合中的相同和不同元素代码示例

    2023-11-28 05:48:41
  • Java中的SuppressWarnings注解使用

    2023-08-18 17:31:19
  • C#操作ini文件的帮助类

    2022-12-26 17:11:09
  • SpringBoot Profile多环境配置方式

    2023-12-14 01:44:24
  • springcloud使用Hystrix进行微服务降级管理

    2023-02-02 06:51:30
  • C#实现一个控制台的点餐系统

    2023-09-03 20:47:24
  • SpringBoot接口如何对参数进行校验

    2021-08-30 17:25:00
  • Java进阶知识之反射的概念与获取方法

    2023-12-09 19:09:14
  • IISExpress 配置允许外部访问详细介绍

    2023-08-02 02:18:10
  • Springboot之idea之pom文件图标不对问题

    2021-12-31 07:27:32
  • asp之家 软件编程 m.aspxhome.com