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

文章目录

  • 一、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库的不断发展和完善,我们有理由相信它在未来的数据处理领域将发挥更大的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【吊打面试官系列-Mysql面试题】什么是锁?

大家好&#xff0c;我是锋哥。今天分享关于 【什么是锁&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是锁&#xff1f; 答&#xff1a;数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

运维 Tips | IT工程师常用的8个USB引导启动器工具

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 【导语】本指南旨在深入探讨Linux上可用的前六个工具&#xff0c;以及Windows上使用两个U盘启动器生成及刻录工具&#xff0c;创建USB引导启动器用于引导系统ISO文件加载到计算机中&#xff0c;从…

LInux驱动开发笔记(十)SPI子系统及其驱动

文章目录 前言一、SPI驱动框架二、总线驱动2.1 SPI总线的运行机制2.2 重要数据结构2.2.1 spi_controller2.2.2 spi_driver2.2.3 spi_device2.2.4 spi_transfer2.2.5 spi_message 三、设备驱动的编写3.1 设备树的修改3.2 相关API函数3.2.1 spi_setup( )3.2.2 spi_message_init( …

在windows 台式机电脑部署GLM4大模型

参考这篇文章在windows笔记本电脑部署GLM4大模型_16g显卡本地部署glm4-CSDN博客 我的环境&#xff08;PC台式机电脑&#xff1a; 处理器 Intel(R) Core(TM) i9-14900K 3.20 GHz 机带 RAM 32.0 GB (31.8 GB 可用)、32G内存、NVIDIA RTX4080&#xff08;16G&#xff09;…

深入理解Open vSwitch(OVS):原理、架构与操作

一、引言 随着云计算和虚拟化技术的不断发展&#xff0c;网络虚拟化成为了构建灵活、可扩展网络架构的关键技术之一。Open vSwitch&#xff08;OVS&#xff09;作为一种功能强大的开源虚拟交换机&#xff0c;被广泛应用于云计算和虚拟化环境中&#xff0c;为虚拟机提供高效、灵…

前端调试技巧

1、利用console打印日志 2、利用debugger关键字&#xff0c;浏览器f12调用到方法debugger处会断点住&#xff0c;可以利用浏览器调试工具查看变量 a.监视表达式可以添加想要观察的变量 b.调用堆栈可以观察方法调用链 3、xhr断点 请求地址包含v1.0/banner_theme/pagelist&a…

预制舱变电站高压室巡检机器人系统

一、背景 预制舱变电站高压室由于空间狭小、设备紧凑&#xff0c;传统的巡检方式往往需要人工进入高压室进行巡检&#xff0c;不仅存在安全风险&#xff0c;而且巡检效率低下&#xff0c;难以满足日益增长的电力设备运维需求。 二、预制舱高压室巡检机器人系统 预制舱高压室巡…

express+vue在线im实现【四】

往期内容 expressvue在线im实现【一】 expressvue在线im实现【二】 expressvue在线im实现【三】 本期示例 本期总结 支持了音频的录制和发送&#xff0c;如果觉得对你有用&#xff0c;还请点个免费的收藏与关注 下期安排 在线语音 具体实现 <template><kl-dial…

【总结】ui自动化selenium知识点总结

1. 大致原理 首页安装第三方库selenium库&#xff0c; 其次要下载好浏览器驱动文件&#xff0c;比如谷歌的 chromedriver.exe&#xff0c;配置上环境变量。 使用selenium的webdriver类去创建一个浏览器驱动对象赋值叫driver&#xff0c;一个浏览器驱动对象就可以 实现 对浏…

【PHP项目实战训练】——使用thinkphp框架对数据进行增删改查功能

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

国内怎样使用GPT4 turbo

GPT是当前最为熟知的大模型&#xff0c;它优越的性能一直遥遥领先于其它一众厂商&#xff0c;然而如此优秀的AI在中国境内却是无法正常使用的。本文将告诉你4种使用gpt4的方法&#xff0c;让你突破限制顺利使用。 官方售价是20美元/月&#xff0c;40次提问/3小时&#xff0c;需…

嵌入式系统软件开发环境_2.一般架构

1.Eclipse框架 嵌入式系统软件开发环境是可帮助用户开发嵌入式软件的一组工具的集合&#xff0c;其架构的主要特征离不开“集成”问题&#xff0c;采用什么样的架构框架是决定开发环境优劣主要因素。Eclipse框架是当前嵌入式系统软件开发环境被普遍公认的一种基础环境框架。目…

vscode插件开发之 - TestController

TesController概要介绍 TestController 组件是用于实现自定义测试框架和集成测试结果的。它允许开发者定义自己的测试运行器&#xff0c;以支持在VSCode中运行和展示测试。以下是一些使用 TestController 组件的主要场景&#xff1a; 自定义测试框架&#xff1a;如果你正在开发…

深度学习算法informer(时序预测)(三)(Encoder)

一、EncoderLayer架构如图&#xff08;不改变输入形状&#xff09; 二、ConvLayer架构如图&#xff08;输入形状中特征维度减半&#xff09; 三、Encoder整体 包括三部分 1. 多层EncoderLayer 2. 多层ConvLayer 3. 层归一化 代码如下 class AttentionLayer(nn.Module):de…

世界奇观短视频制作,AI加持,新手也能月入上万

在这个数字化的时代&#xff0c;短视频已经成为了人们获取信息和娱乐的重要途径。特别是那些展示世界奇观的短视频&#xff0c;如极端的气候、危险的动物、美丽的自然景观等&#xff0c;这些主题具有很强的吸引力&#xff0c;能够引起观众的兴趣和好奇心。那么&#xff0c;如何…

运算放大器(运放)反相放大器电路

运算放大器(运放)反相放大器电路 设计目标 输入ViMin输入ViMax输出VoMin输出VoMax频率f电源Vcc电源Vee–7V7V–14V14V3kHz15V–15V 设计说明 该设计将输入信号 Vi 反相并应用 –2V/V 的信号增益。输入信号通常来自低阻抗源&#xff0c;因为该电路的输入阻抗由输入电阻器 R1…

深度学习神经网络协同过滤模型(NCF)与用户协同过滤(UCF)的区别

一、效果图 点我查看在线demo 二、启发式推荐系统 推荐系统的核心是根据用户的兴趣需求&#xff0c;给用户推荐喜欢的内容。常用的推荐算法有启发式推荐算法&#xff0c;可分为基于用户的 协同过滤&#xff0c;基于物品的协同过滤。 1、基于用户的协同过滤&#xff08;UCF…

【云岚到家】-day04-1-数据同步方案-Canal-MQ

【云岚到家】-day04-1-数据同步方案-Canal-MQ 1 服务搜索1.1 服务搜索技术方案1.1.1 需求分析1.1.2 技术方案1.1.2.1 使用Elasticsearch进行全文检索1.1.2.2 索引同步方案 1.1.3 CanalMQ1.1.3.1 MySQL主从数据同步1.1.3.2 Canal工作流程1.1.3.3 具体实现方案 1.2 MQ技术方案1.2…

Linux连接工具MobaXterm详细使用教程

目录 一、MobaXterm的下载 1、访问官网 2、下载便携版 3、启动MobaXterm 二、MobaXterm基本使用设置 1、新建会话 2、使用ssh连接第一个会话 3、设置主密码 4、主界面 5、sftp文件上传下载 6、文件拖拽的上传下载 7.右键粘贴 8、查看服务器监测信息​编辑 9、个…