C# 读去Word文档(NPOI)

server/2024/12/22 18:53:47/

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/server/27118.html

相关文章

IDEA:运行 Tomcat 报错 “1099”

1、报错的结果 报错 就很明显啊 localhost:1099 端口号被使用了 2、报错原因 tomcat的端口已经被使用&#xff0c;与运行的起了冲突。强制结束项目&#xff0c;但端口号没有被释放短时间内频繁运行tomcat服务器。 3、解决方法 win R 输入 cmd 打开命令框 黑窗口输…

【kettle003】kettle访问SQL Server数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下Microsoft SQL Server 2022关系数据库相关知识体系 3.欢迎批评指正&#xf…

WLAN学习笔记

WALN 引言WLAN的优点WLAN的不足WLAN的基本网络结构基本构成元素基本网络结构Ad-hoc网络WLAN集中控制模式多接入点结构无线桥接结构WLAN的协议标准WLAN的接入过程WLAN 关键技术物理层MAC层基本结构帧间空隙CSMA/CA协议WLAN的安全技术WLAN组网基本设备补充知识无线传感器网络 WSN…

简单数据加解密,JS和JAVA同时实现

前端Vue调用Java后端接口中的数据进行加密&#xff0c;以避免敏感数据泄露。 现在实现一个高性能加密方法&#xff0c;用来对数据进行加密后传输。算法包括JS的加密和解密方法&#xff0c;也包括Java的加密解密方法。 可以在前端加密&#xff0c;后端解密。也可以在后端加密&…

python学习笔记B-14:序列结构之元组--元组的访问与遍历

下面是几种元组的方位与遍历方法&#xff1a; t ("hello","python","world") print("原元组",t) print("t[1]",t[1]) print("t[0:3:2]",t[0:3:2]) #切片操作&#xff0c;从索引值0到索引值为2&#xff0c;步长为…

35 信号处理

什么时候捕捉 如果信号的处理动作是用户自定义函数&#xff0c;在信号递达时就调用这个函数&#xff0c;称为捕捉信号&#xff0c;由于信号处理函数的代码是在用户空间的&#xff0c;处理过程比较复杂&#xff0c;举例如下&#xff1a;用户程序注册了SIGQUIT信号的处理函数sig…

基于3D机器视觉的注塑缺陷检测解决方案

注塑检测是对注塑生产过程中的产品缺陷进行识别和检测的过程。这些缺陷可能包括色差、料流痕、黑点&#xff08;包括杂质&#xff09;等&#xff0c;它们可能是由多种因素引起&#xff0c;如原料未搅拌均匀、烘料时间过长、工业温度局部偏高、模具等问题造成的。不仅影响产品的…

格雷希尔E10系列大电流测试连接器,在新能源汽车大电流接插件的电气测试方案

在新能源汽车的电驱动、电池包等设备的电测试处理中&#xff0c;格雷希尔E10系列电测试连接器具有显著的优势。E10系列的核心设计——插孔/插针&#xff0c;可以达到实验室10万次的插拔寿命&#xff0c;相比传统公母电接头500次左右的连接寿命&#xff0c;E10系列无疑大大减少测…