C# 读去Word文档(NPOI)

embedded/2024/9/23 10:45:27/

NPOI.dll文件下载:

百度网盘 请输入提取码

NPOI介绍:

NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。

NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。

实现的操作:

获取Word文档所有Sheet表格。

读取指定表格数据返回DataTable。

namespace ConsoleApplication1
{public class Program{static void Main(string[] args){Console.WriteLine("读取Word文档所有SheetName↓↓↓↓↓");//文档存放路径string path = System.Windows.Forms.Application.StartupPath + "//初始数据.xls";//获取Word文档里所有Sheet表格List<string> strList = GetSheetStr(path);for (int i = 0; i < strList.Count; i++){Console.WriteLine((i + 1) + ":" + strList[i]);}Console.Write("请输入要查看的Sheet表格编号:");int number = Convert.ToInt32(Console.ReadLine());DataTable dt = SheetToDataTable(path, strList[number - 1]);foreach (DataRow row in dt.Rows){int column = row.ItemArray.Length;string str = "";for (int i = 0; i < column; i++){str += " | " + row[i];}Console.WriteLine(str);}Console.ReadKey();}/// <summary>/// 获取Word文档内所有SheetName/// </summary>/// <param name="path">读取路径</param>/// <returns>返回:字符串集合</returns>static List<string> GetSheetStr(string path){List<string> strSheetName = new List<string>();IWorkbook workbook;string fileExt = Path.GetExtension(path).ToLower();ISheet sheet;using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)){//XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式//if (fileExt == ".xlsx") //{ //    workbook = new XSSFWorkbook(fs); //}//else if (fileExt == ".xls"){workbook = new HSSFWorkbook(fs);}else{workbook = null;}if (workbook == null){return null;}//后去Sheet表格数量int count = workbook.NumberOfSheets;for (int i = 0; i < count; i++){sheet = workbook.GetSheetAt(i);//检查Sheet表格总行数是否大于0 //检查是否有数据,有就获取Sheet表格名称   根据个人需求不加也可以if (sheet.LastRowNum > 0){strSheetName.Add(workbook.GetSheetAt(i).SheetName);}}return strSheetName;}}/// <summary>/// 读取Sheet内容/// </summary>/// <param name="filePath">文件路径</param>/// <param name="sheetName">获取Sheet名称</param>/// <returns>返回DataTable</returns>public static DataTable SheetToDataTable(string filePath, string sheetName){System.Data.DataTable dt = new System.Data.DataTable();NPOI.SS.UserModel.IWorkbook workbook;string fileExt = Path.GetExtension(filePath).ToLower();using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)){//XSSFWorkbook:是操作Excel2007后的版本,扩展名是.xlsx;//HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;//if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); }//else if (fileExt == ".xls"){workbook = new HSSFWorkbook(fs);}else{workbook = null;}if (workbook == null){return null;}ISheet sheet = workbook.GetSheet(sheetName);//表头//读取第一行的标题IRow header = sheet.GetRow(sheet.FirstRowNum);List<int> columns = new List<int>();for (int i = 0; i < header.LastCellNum; i++){//获取标题名称    例如:ID、Name、Ageobject columnName = GetValueType(header.GetCell(i));if (columnName == null || columnName.ToString() == string.Empty){dt.Columns.Add(new DataColumn("Columns" + i.ToString()));}elsedt.Columns.Add(new DataColumn(columnName.ToString()));columns.Add(i);}//数据for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++){DataRow dataRow = dt.NewRow();bool hasValue = false;foreach (int k in columns){dataRow[k] = GetValueType(sheet.GetRow(i).GetCell(k));if (dataRow[k] != null && dataRow[k].ToString() != string.Empty){hasValue = true;}}if (hasValue){dt.Rows.Add(dataRow);}}}}return dt;}/// <summary>/// 获取单元格内数据的类型/// </summary>/// <param name="cell"></param>/// <returns></returns>private static object GetValueType(ICell cell){if (cell == null)return null;switch (cell.CellType){case CellType.Blank:return null;case CellType.Boolean:return cell.BooleanCellValue;case CellType.Numeric:return cell.NumericCellValue;case CellType.String:return cell.StringCellValue;case CellType.Error:return cell.ErrorCellValue;case CellType.Formula:default:return "=" + cell.CellFormula;}}}
}


http://www.ppmy.cn/embedded/30894.html

相关文章

|Python新手小白中级教程|第二十三章:列表拓展之——元组

文章目录 前言一、列表复习1.索引、切片2.列表操作字符3.数据结构实践——字典 二、探索元组1.使用索引、切片2.使用__add__((添加元素&#xff0c;添加元素))3.输出元组4.使用转化法删除元组指定元素5.for循环遍历元组 三、元组VS列表1.区别2.元组&#xff08;tuple&#xff0…

蓝桥杯练习系统(算法训练)ALGO-951 预备爷的悲剧

资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 英语预备爷gzp是个逗(tu)比(hao)&#xff0c;为了在即将到来的英语的quiz中不挂科&#xff0c;gzp废寝忘食复习英语附录单词…

打造智能化且用户体验上乘的企业展馆需关注哪些细节?

随着科技的进步&#xff0c;传统展馆的设计理念和展陈方式已逐渐暴露出不足&#xff0c;为了让企业展馆在新时代焕发出更加璀璨的光彩&#xff0c;我们亟待在展馆的创新设计、智能化展示以及人性化布局等多个层面进行深入探索。那么&#xff0c;究竟需要精心打磨哪些细节&#…

Stable Diffusion使用ControlNet:IP-Adapter实现图片风格迁移

IP-Adapter 全称是 Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models&#xff08;文本到图像扩散模型的文本兼容图像提示适配器&#xff09;&#xff0c;是腾讯研究院出品的一个新的ControlNet模型&#xff0c;旨在使预训练的文本到图像扩散模型能够生…

基于springboot+vue+Mysql的影城管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

从IO到字符流:Java Writer是如何提高文件读写效率的?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

SpringBoot+Vue实现幼儿园管理系统

目录 一、项目介绍 二、项目主要技术 三、系统功能分析和描述 四、系统实现 4.1管理员功能模块 4.2教师功能模块 4.3家长功能模块 五、实现代码 一、项目介绍 本文首先介绍了幼儿园管理系统的背景和意义&#xff0c;以及相关的技术和理论基础。随后&#xff0c;对幼儿…

Jenkins流水线部署springboot项目

文章目录 Jenkins流水线任务介绍Jenkins流水线任务构建Jenkins流水线任务Groovy脚本Jenkinsfile实现 Jenkins流水线任务实现参数化构建拉取Git代码构建代码制作自定义镜像并发布 Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目&#xff0c;每个步骤流程都要通过不…