C#使用EPPlus操作Excel(读写)

2023-12-22 06:59

本文主要是介绍C#使用EPPlus操作Excel(读写),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之所以使用EPPlus操作Excel是因为微软自带的运行效率太低,数据多后会特别慢,不能满足现场要求。如果想速度快,而且只是读取Excel的配置还有另一个办法就是将Excel保存成xml文件参考我的另一个文章:C# 读取XML格式的Excel文件

以前项目中会在Excel中配置参数后,加载动态显示到界面中,动态显示参考我的文章:C# 使用FlowLayoutPanel动态显示_花开莫与流年错_的博客-CSDN博客

百度搜常见的有ERRlus和NPOI,NPOI支持多一点性能差一点

1、下载依赖。在引用》管理NuGet中输入》EPPlus

安装如下第一个搜索结果

2、示例代码

using OfficeOpenXml;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Study_CSharp
{class MyExcelByEPPlus {public void Test(){Stopwatch watch = new Stopwatch();watch.Start();string path = Directory.GetCurrentDirectory() + @"\" + @"file.xlsx";FileInfo file = new FileInfo(path);ExcelPackage.LicenseContext = LicenseContext.NonCommercial;using (var package = new ExcelPackage(file)){string sheetName = "hello";var sheet = package.Workbook.Worksheets.Where(x => x.Name == sheetName).FirstOrDefault();if (sheet == null){sheet = package.Workbook.Worksheets.Add(sheetName);}sheet.Cells[1, 2].Value = "lalala";         // 第一行、第二列//sheet.SetValue(1, 2, "EPPlus value");sheet.InsertRow(3, 4);package.Save();}watch.Stop();Console.WriteLine($"Time is {watch.ElapsedMilliseconds} ms");Console.ReadLine();}}
}

运行报错处理

1、错误:OfficeOpenXml.LicenseException:“Please set the ExcelPackage.LicenseContext

ExcelPackage.LicenseContext = LicenseContext.NonCommercial;    // 添加这行代码后不会报ExcelPackage错误
using (var p = new ExcelPackage()){}

2、错误:System.InvalidOperationException:“序列不包含任何元素”

// 会报错的函数是这样的
var sheet = package.Workbook.Worksheets.Where(x => x.Name == "hello").First();
// 原因是因为使用First的时候至少必须有一条数据,使用Single查询的时候查询结果必须有且只有一条数据,如果没有查到任何数据就会报上面异常。
// 解决办法:使用FirstOrDefault和SingleOrDefault,如果没有数据的话,返回对应类型的默认值.
var sheet = package.Workbook.Worksheets.Where(x => x.Name == "hello").FirstOrDefault();

3、sheet.SetValue(1, 1, "EPPlus value");报错:System.NullReferenceException:“未将对象引用设置到对象的实例。”

是因为上面的返回的sheet还是空,需要在上面加判断如果为空则添加sheet

这篇关于C#使用EPPlus操作Excel(读写)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522992

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一