【 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 处理需求‌。

相关推荐
CodeCraft Studio4 分钟前
借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
开发语言·python·html·markdown·aspose·html转markdown·asposel.html
QQ_4376643145 分钟前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
aramae5 分钟前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
封奚泽优28 分钟前
使用Python实现单词记忆软件
开发语言·python·random·qpushbutton·qtwidgets·qtcore·qtgui
liulilittle1 小时前
C++/CLI与标准C++的语法差异(一)
开发语言·c++·.net·cli·clr·托管·原生
★YUI★2 小时前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
daixin88482 小时前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存
你我约定有三2 小时前
RabbitMQ--消息丢失问题及解决
java·开发语言·分布式·后端·rabbitmq·ruby
小乖兽技术2 小时前
C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
c++·c#·交互
张北北.2 小时前
【深入底层】C++开发简历4+4技能描述6
java·开发语言·c++