以下是 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 处理需求。