C#使用NPOI操作Word表格
添加所有NPOI动态库。NPOI
、NPOI.OOXML
、NPOI.OpenXml4Net
、NPOI.OpenXmlFormats
、ICSharpCode.SharpZipLib
。
1、读取Word表格生成字符串
XWPFDocument docx = new XWPFDocument(stream);
var list = new List<XWPFTableCell>();
string result = "";
foreach (var row in docx.Tables[0].Rows)
{foreach (var cell in row.GetTableCells()){if (!list.Contains(cell)){list.Add(cell);result += cell.GetText() + "#";}}result += "\n";
}
2、读取Word表格生成XML
public XmlDocument GetTable(string wordFile)
{using (FileStream stream = File.OpenRead(wordFile)){XWPFDocument docx = new XWPFDocument(stream);var list = new List<XWPFTableCell>();var xml = new XmlDocument();var node = xml.CreateNode(XmlNodeType.XmlDeclaration, "", "");xml.AppendChild(node);var root = xml.CreateNode(XmlNodeType.Element, "Root", "");xml.AppendChild(root);var title = xml.CreateNode(XmlNodeType.Element, "Title", "");var year = xml.CreateNode(XmlNodeType.Element, "Year", "");var type = xml.CreateNode(XmlNodeType.Element, "Type", "");var text = xml.CreateNode(XmlNodeType.Element, "Text", "");root.AppendChild(title);title.AppendChild(year);title.AppendChild(type);title.AppendChild(text);var header = xml.CreateNode(XmlNodeType.Element, "Header", "");var totalOrder = xml.CreateNode(XmlNodeType.Element, "TotalOrder", "");var secondOrder = xml.CreateNode(XmlNodeType.Element, "SecondOrder", "");var date = xml.CreateNode(XmlNodeType.Element, "Date", "");var companyName = xml.CreateNode(XmlNodeType.Element, "CompanyName", "");var scope = xml.CreateNode(XmlNodeType.Element, "Scope", "");var whyUse = xml.CreateNode(XmlNodeType.Element, "WhyUse", "");var linkMan = xml.CreateNode(XmlNodeType.Element, "LinkMan", "");var phoneNum = xml.CreateNode(XmlNodeType.Element, "PhoneNum", "");var address = xml.CreateNode(XmlNodeType.Element, "Address", "");header.AppendChild(totalOrder);header.AppendChild(secondOrder);header.AppendChild(date);header.AppendChild(companyName);header.AppendChild(scope);header.AppendChild(whyUse);header.AppendChild(linkMan);header.AppendChild(phoneNum);header.AppendChild(address);root.AppendChild(header);var body = xml.CreateNode(XmlNodeType.Element, "Body", "");root.AppendChild(body);foreach (var table in docx.Tables){#regionfor (int i = 0; i < table.Rows.Count; i++){var row = table.Rows[i];for (int j = 0; j < row.GetTableCells().Count; j++){var cell = row.GetCell(j);if (!list.Contains(cell)){list.Add(cell);if (i == 0){var titleText = cell.GetText().Split(' ');year.InnerText = titleText[0];type.InnerText = titleText[1];text.InnerText = titleText[2];}else if (i == 1){switch (j){case 0:totalOrder.InnerText = cell.GetText();break;case 1:secondOrder.InnerText = cell.GetText();break;case 2:date.InnerText = cell.GetText();break;case 3:companyName.InnerText = cell.GetText();break;case 4:scope.InnerText = cell.GetText();break;case 5:whyUse.InnerText = cell.GetText();break;case 6:linkMan.InnerText = cell.GetText();break;case 7:phoneNum.InnerText = cell.GetText();break;case 8:address.InnerText = cell.GetText();break;default:break;}}else{switch (j){case 0:var totalOrder1 = xml.CreateNode(XmlNodeType.Element, "TotalOrder", "");totalOrder1.InnerText = cell.GetText();body.AppendChild(totalOrder1);break;case 1:var secondOrder1 = xml.CreateNode(XmlNodeType.Element, "SecondOrder", "");secondOrder1.InnerText = cell.GetText();body.AppendChild(secondOrder1);break;case 2:var date1 = xml.CreateNode(XmlNodeType.Element, "Date", "");date1.InnerText = cell.GetText();body.AppendChild(date1);break;case 3:var companyName1 = xml.CreateNode(XmlNodeType.Element, "CompanyName", "");companyName1.InnerText = cell.GetText();body.AppendChild(companyName1);break;case 4:var scope1 = xml.CreateNode(XmlNodeType.Element, "Scope", "");scope1.InnerText = cell.GetText();body.AppendChild(scope1);break;case 5:var whyUse1 = xml.CreateNode(XmlNodeType.Element, "WhyUse", "");whyUse1.InnerText = cell.GetText();body.AppendChild(whyUse1);break;case 6:var linkMan1 = xml.CreateNode(XmlNodeType.Element, "LinkMan", "");linkMan1.InnerText = cell.GetText();body.AppendChild(linkMan1);break;case 7:var phoneNum1 = xml.CreateNode(XmlNodeType.Element, "PhoneNum", "");phoneNum1.InnerText = cell.GetText();body.AppendChild(phoneNum1);break;case 8:var address1 = xml.CreateNode(XmlNodeType.Element, "Address", "");address1.InnerText = cell.GetText();body.AppendChild(address1);break;default:break;}}}}}#endregion }return xml;}
}
C#使用NPOI操作Word表格相关推荐
- phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:E-iceblue https://www.cnblo ...
- 黄聪:C#操作Word表格的常见操作
几种常见C#操作Word表格操作有哪些呢?让我们来看看具体的实例演示: bool saveChange = false; //C#操作Word表格操作 object missing = System. ...
- NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable
NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable 使用NPOI可以对Word中的文本做替换,当遇到表格时,单个表格也可以循环遍历 ...
- C# 操作word表格合并单元格
C# 操作word表格 遇到合并单元格的时候,假设表格是3行6列 newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));//合并第1行第1列到横向单元格合并,使 ...
- java操作跨页的word cell_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- Java程序中操作Word表格
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...
Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...
- Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Destiny decides who enters your lif ...
最新文章
- llvm常见问题 (FAQ)
- python函数的基础知识_Python入门基础知识点(函数进阶)
- Mac 安装laravel 框架
- 3.PHP条件语句及其字符串相关函数
- ireport修改jrxml中的sql语句_SQL中的create table与insert into语句
- Character.isLetterOrDigit(ch)判断ch是否为字母或数字
- linux配置redis服务,Linux下安装Redis并设置相关服务
- 编译源码时出现 Checking API: checkapi-last (unknown): error 17解决方法
- git push报错
- (转)采访 | ETHNews 对 Vitalik Buterin 的独家专访
- python读取内存指针_从dll读取内存值+指针+偏移量
- html代码表白_作为一个程序员,表白都要玩出花样
- 挑战杯创业计划书_基于云计算的下料优化软件_1. 执行总结
- PDF中加入HTML,将PDF导入/嵌入到HTML中(For PDF)
- jQuery手动触发事件
- 【开发新手福利】—Bootstrap运用终极指南
- Incremental Event Detection via Knowledge Consolidation Networks
- activeMQ安装问题wrapper | Launching a JVM... wrapper | Unable to execute Java command.
- 关于图片的像素,dpi与实际尺寸的关系
- 判断将输入字母,进行大写转小写,小写转大写