当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/122807.html

相关文章:

  • 开源免费虚拟化平台PVE软件定义网络
  • BGP路由协议之对等体
  • Containerd介绍
  • C++中如何在一个字符串中的任何一个位置插入字符或者字符串--insert()函数实现
  • Python星球日记 - 第18天:小游戏开发(猜数字游戏)
  • 前端视频流技术深度解析
  • Python爬虫教程011:scrapy爬取当当网数据开启多条管道下载及下载多页数据
  • 香港服务器租用对分布式计算的作用
  • Vue3中父组件将一个ref定义的对象类型传递给子组件的解包机制
  • 用Python构建区块链健康数据管理系统——隐私与信任的新纪元
  • python——正则表达式
  • vue3中defineProps的使用说明
  • Python 实现的运筹优化系统数学建模详解(0-1规划背包问题)
  • PHP:从诞生到未来的Web开发利器
  • 数据结构和大数据处理及其加密算法
  • SMB 协议
  • uniApp 设置动态tabs(不是自定义tab哈)
  • 在执行生信分析的时候提示缺少一些R包的报错解决
  • WebForms ViewState
  • SnowNLP 使用大全
  • Scala Iterator(迭代器)
  • 算法进阶指南 袭击
  • 蓝桥杯 跑步计划(模拟日期)
  • JMeter从入门到荒废-常见问题汇总
  • go游戏后端开发30:弃牌逻辑与后续操作
  • vue3中左右布局两个个组件使用vuedraggable实现左向右拖动,右组件列表可上下拖动
  • rook-ceph xx/xxx objects misplaced (xx%)
  • 基于大模型应用技能的学习路径
  • NO.80十六届蓝桥杯备战|数据结构-字符串哈希|兔子与兔子(C++)
  • CCRC 与 EMVCo 双认证:中国智能卡企业的全球化突围