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[] { "", "", "" }, new string[] { "", "", "" } };
- 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 = ; index < maxColumnNum; index++)
- {
- grid.Append(new TableGrid());
- }
- // 设置表格边框
- TableProperties tblProp = new TableProperties(
- new TableBorders(
- new TopBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = },
- new BottomBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = },
- new LeftBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = },
- new RightBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = },
- new InsideHorizontalBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = },
- new InsideVerticalBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = }
- )
- );
- 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)));
- }
- }
- }
- }
执行呈现结果如下:
OpenXml入门----给Word文档添加表格的更多相关文章
- OpenXml入门----给Word文档添加文字
使用OpenXml给word文档添加文字,每个模块都有自己对于的属性以及内容,要设置样式就先声明属性对象,将样式Append到属性里面,再将属性append到模块里面,那么模块里面的内容就具备该样式了 ...
- C# 给Word文档添加内容控件
C# 给Word文档添加内容控件 在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word ...
- 向Docx4j生成的word文档添加图片和布局--第一部分
原文标题:Adding images and layout to your Docx4j-generated word documents, part 1 原文链接:http://blog.iprof ...
- Java 如何给Word文档添加多行文字水印
前言 我在以往的文章中曾介绍过如何给Word文档添加文本水印和图片水印,及怎样删除文档中的水印.关于文本水印,之前那篇教程里主要指的是单行字体的水印,而在操作Word文档时,有时也会碰到需要添加多行文 ...
- OpenXml SDK 2.0 创建Word文档 添加页、段落、页眉和页脚
using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\********.doc ...
- C# 操作Word 文档——添加Word页眉、页脚和页码
在Word文档中,我们可以通过添加页眉.页脚的方式来丰富文档内容.添加页眉.页脚时,可以添加时间.日期.文档标题,文档引用信息.页码.内容解释.图片/LOGO等多种图文信息.同时也可根据需要调整文字或 ...
- .NET 动态向Word文档添加数据
本文章主要用于在网页上填写数据动态填入Word模板中使用 首先要准备一个Word模板,然后在需要插入数据的位置插入书签,这样可以确定在网页上填入的数据可以插入到Word文档相应的位置. 在项目中要声明 ...
- C#/VB.NET 给Word文档添加/撤销书签
在现代办公环境中,阅读或者编辑较长篇幅的Word文档时,想要在文档中某一处或者几处留下标记,方便日后查找.修改时,需要在相对应的文档位置插入书签.那对于开发者而言,在C#或者VB.NET语言环境中,如 ...
- 将word文档A表格中的内容拷贝到word文档B表格中
Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...
随机推荐
- 用SQL语句修复SQL Server数据库
使用数据库的过程中,由于断电或其他原因,有可能导致数据库出现一些小错误,比如检索某些表特别慢,查询不到符合条件的数据等. 出现这些情况的原因,往往是因为数据库有些损坏,或索引不完整. 在ACCESS中 ...
- python 的import机制2
http://blog.csdn.net/sirodeng/article/details/17095591 python 的import机制,以备忘: python中,每个py文件被称之为模块, ...
- 配置了<mvc:resources> 导致以前的controller 无法访问。
解决方案: <mvc:annotation-driven/>
- sso demo ( cas )
1. generate keystore command : keytool -genkey -alias testtomcat -keyalg RSA -keystore "C:\User ...
- (六)play之yabe项目【验证码】
(六)play之yabe项目[验证码] 博客分类: 框架@play framework 添加验证码功能 在Application.java中添加一个action:captcha() /** * 添 ...
- IOS缓存机制详解
资料均来自互联网,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要 ...
- 管理系统的前端解决方案:Pagurian V1.3发布
Pagurian 一个管理系统的前端解决方案, 致力于让前端设计,开发,测试,发布更简单. 功能简介 Pagurian 适用于Web管理级的项目 基于Sea.js遵循CMD规范,友好的模块定义,使业务 ...
- CSS通过边框border-style来写小三角
<!DOCTYPE html> /*直接复制代码即可在浏览器验证*/ <html> <head lang="en"> <meta char ...
- SharePoint List来做项目管理
其实这是一个常见的问题,已经不仅仅只是一次用SharePoint List来做项目管理了. 核心 1. SharePoint List Lookup自己来实现项目的父子关系 2. 权限控制,直接控制在 ...
- mysql innoDB 挂了的临时解决方案
Mysql InnoDB: Error: checksum mismatch by Mattias Hemmingsson on December 23, 2013 in Linux • 6 Comm ...