C#使用NPOI库实现Excel的导入导出操作——提升数据处理效率的利器

news2024/11/27 2:26:52

文章目录

  • 一、NPOI库简介
  • 二、安装与引入
  • 三、Excel的导入操作
    • 1.CSV格式导入
    • 2.XLS格式导入
    • 3. XLSX格式导入
  • 四、Excel的导出操作
    • 1. CSV格式导出
    • 2. XLS格式导出
    • 3. XLSX格式导出
  • 五、NPOI库的应用优势与改进方向
  • 总结


在这里插入图片描述

在日常工作学习中,我们经常需要处理Excel文件,如数据录入、报表生成等。NPOI库作为一种优秀的.NET库,能够方便快捷地实现Excel的导入导出操作。本文将详细介绍NPOI库的基本功能、安装使用方法,以及Excel的导入导出功能,并通过示例代码展示其应用效果。

一、NPOI库简介

NPOI是一个开源的.NET库,用于处理Microsoft Office文档,包括Word、Excel等。它支持Excel的读取、写入、格式化等操作,同时具有良好的扩展性和易用性。NPOI库由两部分组成:NPOI和NPSpreadsheet。NPOI提供了对Microsoft Office文档格式的低层次访问,而NPSpreadsheet提供了更高层次的API,用于处理Excel文件。

二、安装与引入

在项目中使用NPOI之前,需要先安装NPOI库。可以通过NuGet包管理器进行安装,命令如下:

Install-Package NPOI

安装完成后,在项目中引入NPOI的命名空间:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

三、Excel的导入操作

NPOI支持多种格式(如CSV、XLS、XLSX)的Excel文件导入。以下分别介绍这三种格式的导入方法及示例代码。

1.CSV格式导入

CSV(逗号分隔值)是一种简单常见的文本文件格式,用于存储表格数据。以下是一个CSV格式导入的示例代码:

public void ImportCsv(string filePath)
{
    using (StreamReader streamReader = new StreamReader(filePath))
    {
        string line;
        int rowIndex = 0;
        while ((line = streamReader.ReadLine()) != null)
        {
            string[] cellValues = line.Split(',');
            if (rowIndex == 0)
            {
                // 处理表头
            }
            else
            {
                // 处理数据,如添加到数据列表框等
            }
            rowIndex++;
        }
    }
}

2.XLS格式导入

XLS格式是较早的Excel文件格式。以下是一个XLS格式导入的示例代码:

public void ImportXls(string filePath)
{
    using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        IWorkbook workbook = new HSSFWorkbook(fileStream);
        ISheet sheet = workbook.GetSheetAt(0);

        for (int i = 0; i < sheet.LastRowNum + 1; i++)
        {
            IRow row = sheet.GetRow(i);
            if (row != null)
            {
                for (int j = 0; j < row.Cells.Count; j++)
                {
                    ICell cell = row.GetCell(j);
                    if (cell != null)
                    {
                        // 获取单元格的值
                        string cellValue = cell.ToString();
                        Console.WriteLine($"单元格({i + 1}, {j + 1})的值为:{cellValue}");
                    }
                }
            }
        }

        workbook.Close();
    }
}

3. XLSX格式导入

XLSX格式是当前主流的Excel文件格式。以下是一个XLSX格式导入的示例代码:

publ

ic void ImportXlsx(string filePath)
{
    using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        IWorkbook workbook = new XSSFWorkbook(fileStream);
        ISheet sheet = workbook.GetSheetAt(0);

        for (int i = 0; i < sheet.LastRowNum + 1; i++)
        {
            IRow row = sheet.GetRow(i);
                        if (row != null)
            {
                for (int j = 0; j < row.Cells.Count; j++)
                {
                    ICell cell = row.GetCell(j);
                    if (cell != null)
                    {
                        // 获取单元格的值
                        string cellValue = cell.ToString();
                        Console.WriteLine($"单元格({i + 1}, {j + 1})的值为:{cellValue}");
                    }
                }
            }
        }

        workbook.Close();
    }
}

四、Excel的导出操作

NPOI同样支持多种格式(如CSV、XLS、XLSX)的Excel文件导出。以下分别介绍这三种格式的导出方法及示例代码。

1. CSV格式导出

以下是一个CSV格式导出的示例代码:

public void ExportCsv(string filePath, List<List<string>> data)
{
    using (StreamWriter streamWriter = new StreamWriter(filePath))
    {
        for (int i = 0; i < data.Count; i++)
        {
            string line = string.Join(",", data[i]);
            streamWriter.WriteLine(line);
        }
    }
}

2. XLS格式导出

以下是一个XLS格式导出的示例代码:

public void ExportXls(string filePath, List<List<string>> data)
{
    using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {
        IWorkbook workbook = new HSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        for (int i = 0; i < data.Count; i++)
        {
            IRow row = sheet.CreateRow(i);
            for (int j = 0; j < data[i].Count; j++)
            {
                ICell cell = row.CreateCell(j);
                cell.SetCellValue(data[i][j]);
            }
        }

        workbook.Write(fileStream);
    }
}

3. XLSX格式导出

以下是一个XLSX格式导出的示例代码:

public void ExportXlsx(string filePath, List<List<string>> data)
{
    using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {
        IWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        for (int i = 0; i < data.Count; i++)
        {
            IRow row = sheet.CreateRow(i);
            for (int j = 0; j < data[i].Count; j++)
            {
                ICell cell = row.CreateCell(j);
                cell.SetCellValue(data[i][j]);
            }
        }

        workbook.Write(fileStream);
    }
}

五、NPOI库的应用优势与改进方向

NPOI库在Excel导入导出方面的应用优势主要体现在以下几点:

开源免费:NPOI是一个开源的.NET库,可以免费使用,节省了开发成本。
功能丰富:NPOI支持多种Excel格式,包括CSV、XLS、XLSX等,满足不同需求。
扩展性强:NPOI具有良好的扩展性,可以通过自定义实现更多复杂的操作。
易用性:NPOI提供了简单易用的API,降低了学习成本,提高了开发效率。

未来可能的改进方向:

提高性能:在处理大量数据时,NPOI的性能还有待提高,可以通过优化算法和内存管理来实现。
增加更多格式支持:除了CSV、XLS、XLSX格式,NPOI可以考虑支持更多常见的文档格式,如PDF等。
完善文档:虽然NPOI库的文档相对完善,但仍有一些细节和高级用法没有覆盖到,可以通过丰富文档来提高用户体验。

总结

NPOI库是一个功能强大的.NET库,用于处理Excel文件,包括导入和导出操作。本文详细介绍了NPOI库的基本功能、安装使用方法,以及Excel的导入导出功能。通过示例代码,展示了NPOI库在实际应用中的效果。

NPOI库在Excel导入导出方面的应用优势主要体现在开源免费、功能丰富、扩展性强和易用性等方面。然而,NPOI库在处理大量数据时性能仍有待提高,同时可以考虑增加更多格式支持,并完善文档,以提高用户体验。

总体而言,NPOI库为.NET开发者提供了一个高效、便捷的Excel文件处理工具,有助于提升工作效率。随着NPOI库的不断发展和完善,我们有理由相信它在未来的数据处理领域将发挥更大的作用。

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

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

相关文章

测绘行业解决方案

应用场景 - 地籍测量 业务挑战 • 人工地籍测量速度慢&#xff0c;效率低&#xff0c;工程周期长 • 外业工作量大&#xff0c;人力成本高 • 传统测绘成果限于数字线划图&#xff0c;无法直观展示地块实景效果 无人机优势 • 可实现 1:500 免像控测绘 • 高效作业&…

CVE-2023-38836(文件上传+命令执行)

简介 BoidCMS v.2.0.0 存在文件上传漏洞&#xff0c;远程攻击者可通过添加 GIF 头部绕过 MIME 类型检查&#xff0c;执行任意代码。 过程 打开靶场 对网站进行目录扫描 发现后台&#xff0c;登录弱口令账号密码 admin/password 发现文件上传位置 根据简介提示&#xff0c;…

C# 实现去除多行文本框光标闪烁,并设置行距

一、前言 本篇主要通过继承RichTextBox 的方式实现去除多行文本框的光标闪烁&#xff0c;以及能够设置行距大小&#xff0c;这是因为C#提供的TextBox 和 RichTextBox 本身无这样的功能 二、代码 封装 RichTextBox 为CustomTextBox using System; using System.Collections.Ge…

惠海H4120 降压IC 40V 36V 30V降压5V3A 9V3A 12V3A 动态响应优异,低纹波

H4120是一款功能优良的异步降压型DC-DC转换器。它的主要特性和优势如下&#xff1a; 产品特性&#xff1a; 内置40V耐压MOS&#xff1a;内置的高耐压MOS使得H4120能够处理更多种的输入电压范围&#xff0c;增强了其适用性和可靠性。 宽输入范围&#xff1a;输入电压可在5V至…

【python】PyQt5初体验,窗口等组件开发技巧,面向对象方式开发流程实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

docker换源

文章目录 前言1. 查找可用的镜像源2. 配置 Docker 镜像源3. 重启 Docker 服务4. 查看dock info是否修改成功5. 验证镜像源是否更换成功注意事项 前言 在pull镜像时遇到如下报错&#xff1a; ┌──(root㉿kali)-[/home/longl] └─# docker pull hello-world Using default …

hive优化之逻辑类似重复

今天拿到一个二次开发的需求&#xff0c;只是增加一个业务类型&#xff0c;开发起来倒是也蛮轻松。 但是&#xff0c;对自己的要求不难这么低&#xff0c;否则可替代性也太高了。 除了完成自己的那部分开发&#xff0c;当然展现自己实力的&#xff0c;可以是优化。 1&#x…

Java基础学习-数组

目录 数组定义 注意点&#xff1a; 地址值是数组在内存中实际存储的地址。 案例遍历&#xff1a;遍历数组得到每一个元素&#xff0c;求数组里面所有数据和 案例&#xff1a;定义数组&#xff0c;遍历能被3整除的数字 案例&#xff1a;遍历一个数组&#xff0c;奇数将当前…

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接

文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

Oracle最终还是杀死了MySQL

起因 大约15年前&#xff0c;Oracle收购了Sun公司&#xff0c;从而也拥有了MySQL&#xff0c;互联网上关于Oracle何时会“扼杀MySQL”的讨论此起彼伏。 当时流传着各种理论&#xff1a;从彻底扼杀 MySQL 以减少对 Oracle 专有数据库的竞争&#xff0c;到干掉 MySQL 开源项目&…

团队管理五个基本法则,帮你打造高效团队

团队管理是一项至关重要的工作&#xff0c;作为一名管理者&#xff0c;应该如何在团队管理中发挥作用呢&#xff1f;以下是团队管理的五个基本原则&#xff0c;它们能够帮助你打造出一个高效协作的团队。 一、以身作则 团队要保持超强的执行力&#xff0c;管理者必须以身作则…

【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

&#x1f525;引言 本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项&#xff0c;帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔…

华为海思CPU解读

安全可靠CPU测评结果&#xff08;华为海思篇&#xff09; 中国信息安全测评中心于2024年5月20日发布安全可靠测评结果公告&#xff08;2024年第1号&#xff09;&#xff0c;公布依据《安全可靠测评工作指南&#xff08;试行&#xff09;》的测评结果&#xff0c;自发布起有效期…

计算机网络:1概述、2物理层

目录 概述因特网网络、互连网&#xff08;互联网&#xff09;与因特网的区别与关系因特网发展的三个阶段因特网服务提供者&#xff08;Internet Service Provider&#xff0c;ISP&#xff09;因特网的标准化工作因特网的管理结构 三种交换电路交换分组交换报文交换 计算机网络性…

什么电脑录屏软件好用?这里有3款超实用推荐!

在当今数字化时代&#xff0c;电脑录屏软件已经成为了人们日常学习和工作中不可或缺的工具。无论是录制游戏实况、制作教程视频&#xff0c;还是保存线上会议的内容&#xff0c;一款好用的电脑录屏软件都显得尤为重要。可是什么电脑录屏软件好用呢&#xff1f;本文将为大家介绍…

如何有效地进行机台数据管理,让数据发挥更大的价值?

机台数据管理是一个涉及收集、存储、分析和保护与机台&#xff08;可能是机械设备、生产线设备、医疗设备等&#xff09;相关数据的过程。通常包括以下几个方面&#xff1a; 1.数据收集&#xff1a;使用传感器和数据采集系统来收集机台的性能数据&#xff0c;如温度、压力、速…

Shell编程规范与变量-01

一、Shell脚本概述 在一些复杂的 Linux 维护工作中&#xff0c;大量重复性的输入和交互操作不仅费时费力&#xff0c;而且容易出错&#xff0c;而编写一个恰到好处的 Shell 脚本程序&#xff0c;可以批量处理、自动化地完成一系列维护任务&#xff0c;大大减轻管理员的负担。 1…

【机器学习】深度学习赋能:基于 LSTM 的智能日志异常检测

目录 1. LSTM 简介 2. 日志序列异常检测概述 3. 数据预处理 3.1 日志解析 3.2 数据清洗 3.3 序列化 3.4 特征提取 示例代码 4. 构建 LSTM 模型 4.1 模型结构 4.2 模型构建示例 5. 训练 LSTM 模型 5.1 数据准备 5.2 模型训练 示例代码 6. 异常检测 6.1 异常分数…

pycharm的一些配置

1.安装 2.字体 3.新建文件模版 4.快捷键设置

openeuler一个服务异常占用cpu的排查过程

1 环境 硬件环境&#xff1a;LS1046A arm64 系统环境&#xff1a;openEuler release 22.03 (LTS-SP1) Linux kernel 4.19.26 2 问题说明 我的硬件平台需要适配一下 openEuler release 22.03 (LTS-SP1) 但是目前只能使用原来硬件平台的内核&#xff0c;在适配的过程中…