【 C# 使用 MiniExcel 库的典型场景】

以下是 C# 使用 MiniExcel 库的典型场景及代码示例:

一、基础读取操作

强类型读取‌(需定义数据模型类)

定义与 Excel 列名匹配的类后直接映射为对象集合:

csharp

Copy Code

public class UserAccount {

public int Id { get; set; }

public string Name { get; set; }

}

var data = MiniExcel.Query("example.xlsx").ToList();

foreach (var item in data)

Console.WriteLine($"ID:{item.Id}, Name:{item.Name}");

适用场景:列结构固定的 Excel 文件‌。

动态类型读取‌

无需定义模型,通过列名(如 A, B)或列名属性访问数据:

csharp

Copy Code

var rows = MiniExcel.Query("test.xlsx").ToList();

foreach (var row in rows)

Console.WriteLine($"第一列值:{row.A},第二列值:{row.B}");

适用场景:快速读取未知结构或临时 Excel 文件‌。

二、数据写入操作

导出对象集合到 Excel‌

将列表数据写入指定路径的 Excel 文件:

csharp

Copy Code

var users = new List {

new UserAccount { Id = 1, Name = "Alice" },

new UserAccount { Id = 2, Name = "Bob" }

};

MiniExcel.SaveAs("output.xlsx", users);

注:自动根据对象属性生成表头‌。

三、高级处理技巧

数据类型转换‌

动态类型读取时手动转换数据类型:

csharp

Copy Code

var rows = MiniExcel.Query("data.xlsx").ToList();

var processed = rows.Select(r => new {

Id = Convert.ToInt32(r.A),

Score = Convert.ToDouble(r.B)

});

动态类型默认数值为 double,需显式转换‌。

错误处理‌

捕获文件读取异常:

csharp

Copy Code

try {

var data = MiniExcel.Query("invalid.xlsx").ToList();

} catch (FileNotFoundException ex) {

Console.WriteLine(KaTeX parse error: Expected 'EOF', got '}' at position 24: ...ex.Message}"); }̲ catch (Invalid..."格式错误:{ex.Message}");

}

确保程序健壮性‌。

四、性能优化建议

使用流式读取处理百万级数据,避免内存溢出‌。

动态类型读取比强类型更轻量,但牺牲了类型安全性‌。

以上示例覆盖了 MiniExcel 的核心功能,可满足 90% 的 Excel 处理需求‌。

相关推荐
zrc0070071 小时前
steam无法登录 steam错误 登录时出现错误。请稍后再试。解决办法 steam无法登录解决办法 湖南地区steam DNS问题解决办法
windows·经验分享·游戏·缓存·游戏程序·创业创新·玩游戏
BuHuaX1 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
xys_6781 小时前
深挖C++:C++入门基础
开发语言·c++
BK贝壳2 小时前
布尔队列 BHA_Queue:入队出队均摊 O(1);附 BHA_Dict
windows
-星空下无敌2 小时前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba
asdzx672 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
燃烧的枫2 小时前
Windows 下 YOLO11 Pose 的 TensorRT C++ 部署
windows·yolo·tensorrt·1024程序员节·yolo11-pose
幻境如梦丶皆为虚2 小时前
从零写一个 DSH 插件:在左侧菜单栏加一个「测试」
开发语言·javascript·ecmascript
LabVIEW开发2 小时前
LabVIEW 局部变量与数据流:这道 CLAD 题为什么答案是 Undefined
java·开发语言·labview