【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

欢迎来到《小5讲堂》
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 背景
  • 读取并保存
  • NPOI信息
    • NPOI 插件介绍
    • 基本功能
    • 示例代码
    • 写入 Excel 文件的示例
  • 相关文章

背景

好久没使用C#操作过Excel等文件,刚好今天有位大学同学问到博主。
他有100多个excel表格文件,需要提取每个文件的第二行数据统一保存到一张表里。
后面又需要把所有文件的excel数据全部放到同一个张表,NPOI插件是插件首选。

读取并保存

创建一个新的工作簿,定义表头,创建表头行。
读取某个文件夹目录,遍历所有文件夹下的所有excel文件,并读取行数据,遍历每个列的行数据,追加到新的工作簿行里,最后进行保存输出到本地。

// 读取xlsx
private void ReadExcelFiles(string folderPath)
{if (!Directory.Exists(folderPath)){MessageBox.Show("指定的文件夹路径不存在");return;}// ===创建一个新的工作簿===IWorkbook workbook = new XSSFWorkbook();ISheet sheet = workbook.CreateSheet("Sheet1");// 定义表头string[] headers = {"字段1", "字段2", "字段3", "字段4", "字段5"};// 创建表头行IRow headerRow = sheet.CreateRow(0);for (int i = 0; i < headers.Length; i++){headerRow.CreateCell(i).SetCellValue(headers[i]);}// ===创建一个新的工作簿===int rowIndex = 1;var files = Directory.GetFiles(folderPath, "*.xlsx");foreach (var file in files){try{if (!File.Exists(file)){MessageBox.Show($"文件 {file} 不存在");continue;}using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)){IWorkbook workbook2 = new XSSFWorkbook(fileStream);ISheet sheet2 = workbook2.GetSheetAt(0); // 获取第一个工作表// 获取行数int rowCount = sheet2.PhysicalNumberOfRows;for (int rr = 0; rr < rowCount; rr++){IRow row = sheet2.GetRow(rr + 1); // 获取第二行if (row != null){var rowValues = row.Cells.Select(cell => cell.ToString()).ToArray();IRow dataRow = sheet.CreateRow(rowIndex);for (int i = 0; i < rowValues.Length; i++){dataRow.CreateCell(i).SetCellValue(rowValues[i]);}}rowIndex++;}}}catch (Exception ex){MessageBox.Show($"读取文件 {Path.GetFileName(file)} 时发生错误: {ex.Message}");}}// ===保存文件===string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "alldata.xlsx");using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(fs);}// ===/保存文件===
}

在这里插入图片描述

NPOI信息

NPOI 是一个用于处理 Microsoft Office 文件的开源库,它提供了对 Excel、Word 和 PowerPoint 文件的读写功能。
NPOI 支持处理 .xls 和 .xlsx 格式的 Excel 文件,.doc 和 .docx 格式的 Word 文件,.ppt 和 .pptx 格式的 PowerPoint 文件。
以下是 NPOI 的基本功能和插件介绍:

NPOI 插件介绍

1.NPOI: 核心库,用于读取和写入 Office 文件的基本操作。它包含处理 Excel、Word 和 PowerPoint 文件的功能。
2.NPOI.OOXML: 支持 .xlsx 格式的 Excel 文件(即 Office 2007 及以后版本)。这是 NPOI 的一个扩展库,提供对 Excel 2007 及以后版本格式的支持。
3.NPOI.OpenXml4Net: 支持 .docx 和 .pptx 格式的文件(即 Office 2007 及以后版本)。它用于处理 Open XML 格式的文件。
4.NPOI.HSSF: 支持 .xls 格式的 Excel 文件(即 Office 97-2003 版本)。用于读取和写入旧版本的 Excel 文件。
5.NPOI.SS.UserModel: 提供了处理 Excel 文件的通用接口,包括 IWorkbook、ISheet 和 IRow 等接口,适用于各种格式的 Excel 文件。

基本功能

1.Excel 文件操作

  • 读取 Excel 文件: 通过 NPOI 读取 .xls 和 .xlsx 文件的数据,包括单元格内容、行和列的索引等。
  • 写入 Excel 文件: 可以创建新的 Excel 文件或修改现有文件,包括设置单元格的格式、字体、颜色等。
  • 数据操作: 读取和写入单元格内容,操作行和列,插入和删除行列,合并单元格等。
  • 样式和格式: 设置单元格的样式,包括字体、颜色、边框、对齐方式等。
    2.Word 文件操作
  • 读取 Word 文件: 获取 .doc 和 .docx 文件中的文本、表格、段落等。
  • 写入 Word 文件: 创建新的 Word 文档或修改现有文档,包括添加文本、表格、图片等。
  • 格式设置: 设置段落格式、字体样式、字体大小、文本颜色等。
    3.PowerPoint 文件操作
  • 读取 PowerPoint 文件: 提取 .ppt 和 .pptx 文件中的幻灯片内容、文本、图片等。
  • 写入 PowerPoint 文件: 创建新的 PowerPoint 演示文稿或修改现有的演示文稿,包括添加幻灯片、设置幻灯片的内容和样式等。

示例代码

读取 Excel 文件的示例

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;  // 对于 .xlsx 格式
// using NPOI.HSSF.UserModel;  // 对于 .xls 格式class Program
{static void Main(){string filePath = "your_file_path.xlsx";using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)){IWorkbook workbook = new XSSFWorkbook(fileStream);  // 对于 .xlsx 文件ISheet sheet = workbook.GetSheetAt(0);foreach (IRow row in sheet){foreach (ICell cell in row){Console.Write($"{cell.ToString()} ");}Console.WriteLine();}}}
}

写入 Excel 文件的示例

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;  // 对于 .xlsx 格式
// using NPOI.HSSF.UserModel;  // 对于 .xls 格式class Program
{static void Main(){string filePath = "your_file_path.xlsx";IWorkbook workbook = new XSSFWorkbook();ISheet sheet = workbook.CreateSheet("Sheet1");IRow row = sheet.CreateRow(0);ICell cell = row.CreateCell(0);cell.SetCellValue("Hello, NPOI!");using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(fileStream);}}
}

这些示例展示了如何使用 NPOI 进行基本的文件读写操作。如果你需要更详细的文档或具体功能的实现,可以参考 NPOI 的 官方文档 或其 GitHub 页面。

相关文章

【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端JavaScript处理小数精度问题(最佳实践)

前言&#xff1a; 针对于小数精度问题&#xff0c;本次我们主要推荐两种方式&#xff0c;一种是简单的函数封装&#xff0c;一种是使用第三方库big.js。 方法一&#xff1a; 自封装函数搭配parseFloat和toFixed解决小数精度问题&#xff0c;仅适用于解决一般性小数精度问题&…

【云原生】Kubernetes----k8s免密使用harbor私有仓库

目录 引言 一、搭建Harbor仓库 &#xff08;一&#xff09;关闭防护 &#xff08;二&#xff09;安装docker &#xff08;三&#xff09;安装docker-compose &#xff08;四&#xff09;安装harbor-offline 1.获取安装包 2.修改配置文件 3.启动服务 4.登录仓库验证 二…

营销人看巴黎奥运会,看到了什么?

不同的人眼中的巴黎奥运会是不一样的&#xff1a;环保人士关注奥运场馆的绿色设计&#xff0c;以及赛事期间对可再生能源的利用&#xff1b;旅游博主用镜头捕捉巴黎奥运会每一个精彩瞬间&#xff1b;社会学家在巴黎奥运会看到多元文化的交流与融合…… 那么营销人在巴黎奥运会…

聚观早报 | OPPO Find X8系列电池曝光;小米15 Pro更多影像细节

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月30日消息 OPPO Find X8系列电池曝光 小米15 Pro更多影像细节 KeeTa平台已开放便利店入驻 比亚迪方程豹将扩大…

大模型面试之LoRA

LoRA的解释&#xff1a;一种高效微调预训练神经网络的方法 LoRA 解决的问题&#xff1a; &#x1f538; 2021年初&#xff0c;微软与OpenAI合作探索GPT-3的商业可行性。 &#x1f538; 发现仅仅通过提示&#xff08;prompting&#xff09;不足以完成生产任务&#xff0c;例如…

EfficientNet-v2-s图像分类训练(简洁版)

使用torchvision集成的efficientnet-v2-s模型&#xff0c;调用torchvision库中的Oxford IIIT Pet数据集&#xff0c;对模型进行训练。 若有修改要求&#xff0c;可以修改以下部分&#xff1a; train_dataset OxfordIIITPet(root./data, splittrainval, downloadTrue, transfo…

loguru日志模块:简化Python自动化测试的日志管理!

引言 日志是软件开发中的关键组成部分&#xff0c;为开发和测试人员提供了调试和监控应用程序的重要手段。loguru 是一个第三方的 Python 日志库&#xff0c;以其简洁的 API 和自动化的功能脱颖而出。本文将探讨为什么项目中需要日志&#xff0c;loguru 为何受到青睐&#xff…

【Python机器学习】决策树的构造——递归构建决策树

我们可以采用递归的原则处理数据集&#xff0c;递归结束的条件是&#xff1a;程序遍历完所有划分数据集的属性&#xff0c;或者每个分支下的所有实例都具有相同的分类。如果所有实例具有相同的分类&#xff0c;则得到一个叶子节点或者终止块。任何到达叶子节点的数据必然属于叶…

年化27.9%,最大回撤-13.6%的可转债因子策略,结合机器学习特征筛选(附python代码)

原创文章第603篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们重新更新了可转债的全量数据&#xff0c;包含全量已经退市的转债。 ——这是与股票市场不一样的地方&#xff0c;股票退市相对少&#xff0c;而转债本身就有退出周期。 因此&…

x264 环路滤波原理系列:x264_frame_deblock_row 函数

x264_frame_deblock_row 函数 功能:该函数对视频帧中的一行宏块(Macroblock)进行去块滤波处理。去块滤波是视频编码中常用的一种技术,用于减少宏块之间的边界不连续性,从而提高视频质量。 函数关系与原理图: 函数原理流程梳理: 局部变量初始化;for 循环处理每个宏块:…

如何借助低代码 + BI 实现国央企数智化转型?

概要 在当前的软件开发时代&#xff0c;许多企业面临着核心技术缺失、专业人才短缺以及产品能力单一等问题&#xff0c;迫切需要加强技术实力&#xff0c;补充和扩展原有的业务和行业能力。将技术与业务需求深度结合&#xff0c;构建适应时代需求的技术业务模式&#xff0c;成…

容易发表的医学SCI期刊推荐,附投稿经验

常笑医学整理了适合医学生、医务工作者进行论文投稿的医学SCI期刊&#xff0c;附期刊详细参数与真实投稿经验&#xff0c;供大家参考。 1、ULTRASOUND IN MEDICINE AND BIOLOGY&#xff08;超声医学和生物学&#xff09; &#xff08;详细投稿信息请点击刊物名称查看&#xff…

MATLAB被360误杀的解决方案

前面被误杀&#xff0c;今天又被误杀。 前面误杀结果是缺少文件&#xff0c;重装MATLAB也不行。 结果重装了操作系统。 这次&#xff0c;看到了提示额外小心。 当时备份了“病毒”文件&#xff0c;结果备份的也被杀了。 解铃还须系铃人 在360安全卫士里面恢复&#xff0c;步骤…

数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)

数据库管理225期 2024-07-30 数据库管理-第225期 Oracle DB 23.5新特性一览&#xff08;20240730&#xff09;1 二进制向量维度格式2 RAC上的复制HNSW向量索引3 JSON集合4 JSON_ID SQL函数5 优化的通过网络对NVMe设备的Oracle的原生访问6 DBCA支持PMEM存储7 DBCA支持标准版高可…

PPT图表制作

一、表格的底纹 插入→表格→绘制表格→表设计→选择单元格→底纹 二、把一张图片做成九宫格 1. 把一张图片画成九宫格&#xff08;处理过后还是一张图片&#xff0c;但是有框线&#xff09; 绘制33表格→插入图片→全选表格单元格→右键设置形状格式→填充→图片或纹理填充…

前后端分离开发遵循接口规范-YAPI

目前&#xff0c;网站主流开发方式是前后端分离。因此前后端必须遵循一套统一的规范&#xff0c;才能保证前后端进行正常的数据&#xff08;JSON数据格式&#xff09;请求、影响&#xff0c;这套规范即是 YAPI. 产品经理撰写原型&#xff1b; 前端或后端撰写接口文档。 YAPI…

一座山城如何打造教育“一张网”

教育新基建作为国家新基建的重要组成部分,是实现教育高质量发展的基础支撑。2021年,教育部等六部门印发相关部署意见时明确提出:到2025年,基本形成结构优化、集约高效、安全可靠的教育新型基础设施体系。 在此宏观导向下,山城重庆积极响应,立足本地情况,开启了其特色化的探索之…

K8s对接Ceph-csi配置手册(附带踩坑记录以及解决方法)

目录 Ceph CSI (Container Storage Interface) CSI 的作用&#xff1a; 前提配置 版本信息 获取Ceph认证信息 获取Ceph集群Monitor信息 下载并部署Ceph CSI 如果此时全部显示错误&#xff0c;那就代表镜像拉取错误&#xff0c;此时执行的yaml脚本&#xff0c;通过yaml脚…

进行良好的文献综述能否提高学术研究的可信度

VersaBot一键生成文献综述 进行良好的文献综述 对于从多个方面提高学术研究的可信度至关重要&#xff1b; 1. 展示专业知识&#xff1a; 全面的回顾表明您对您所在领域的现有知识和相关理论有深入的了解。这将使您成为权威&#xff0c;并将您的研究置于更广泛的背景下。 2.…

ValueError: invalid literal for int() with base 10: ‘a‘

ValueError: invalid literal for int() with base 10: ‘a‘ 目录 ValueError: invalid literal for int() with base 10: ‘a‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff…