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#程序设计有所帮助
标签: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