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(读写)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_17242837/article/details/127989248
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/522992

相关文章

Golang interface{}的具体使用

《Golanginterface{}的具体使用》interface{}是Go中可以表示任意类型的空接口,本文主要介绍了Golanginterface{}的具体使用,具有一定的参考价值,感兴趣的可以了... 目录一、什么是 interface{}?定义形China编程式:二、interface{} 有什么特别的?✅

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR

使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案

《使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案》在SpringBoot应用中,我们经常使用​​@Cacheable​​注解来缓存数据,以提高应用的性能... 目录@Cacheable注解Redis时,Redis宕机或其他原因连不上,继续调用原方法的解决方案1

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

java中XML的使用全过程

《java中XML的使用全过程》:本文主要介绍java中XML的使用全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录什么是XML特点XML作用XML的编写语法基本语法特殊字符编写约束XML的书写格式DTD文档schema文档解析XML的方法​​DOM解析XM

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py