编辑
2025-09-25
C#
00

目录

摘要
正文
一个写的例子
插入行
读取Excel
使用模板

摘要

MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。

  • 低内存耗用,避免OOM、频繁 Full GC 情况
  • 支持即时操作每行数据
  • 兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询
  • 轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB
  • 简便操作的 API 风格

image.png

正文

首先,您需要将 MiniExcel 库添加到您的 C# WinForms 项目中。您可以使用 NuGet 包管理器来安装 MiniExcel。

一个写的例子

定义一个类

C#
public class Person { public string Name { get; set; } public int Age { get; set; } public string Country { get; set; } }

导出过程

C#
private void btnWriteExcel_Click(object sender, EventArgs e) { // 创建一个包含数据的列表 var data = new List<Person> { new Person {Name= "John Doe",Age= 30,Country= "USA" }, new Person{ Name= "Alice Smith",Age= 25,Country= "Canada" }, new Person { Name= "Bob Johnson", Age= 35, Country= "UK" } }; // 指定要保存的文件名 var saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel Files|*.xlsx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { string filePath = saveFileDialog.FileName; // 写入数据到 Excel 文件 MiniExcel.SaveAs(filePath, data); MessageBox.Show("数据已成功写入 Excel 文件!"); } }

列的别名

C#
public class Person { [ExcelColumnName("姓名")] public string Name { get; set; } public int Age { get; set; } public string Country { get; set; } }

image.png

指定列宽

C#
[ExcelColumnWidth(20)]

插入行

只支持csv文件

C#
// 指定要保存的文件名 var saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel Files|*.csv"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { string filePath = saveFileDialog.FileName; // 写入数据到 Excel 文件 MiniExcel.SaveAs(filePath, data); //插入行 var d = new Person { Name = "张三", Age = 30, Country = "CHINA" }; MiniExcel.Insert(filePath, d); MessageBox.Show("数据已成功写入 Excel 文件!"); }

读取Excel

C#
private void btnRead_Click(object sender, EventArgs e) { // IEnumerable var rows = MiniExcel.Query<Person>("C:\\Users\\trueideal\\Downloads\\4.xlsx"); foreach (var row in rows) { //row 就是一个Person实例 } }

image.png

指定读取的Sheet

C#
MiniExcel.Query(path, sheetName: "SheetName");

读取所有的列

C#
private void btnReadCol_Click(object sender, EventArgs e) { var columns = MiniExcel.GetColumns("C:\\Users\\trueideal\\Downloads\\4.xlsx",useHeaderRow:true); }

使用模板

类似 Vue 模板 {{变量名称}},

image.png

C#
private void btnTemplate_Click(object sender, EventArgs e) { string template = "C:\\Users\\trueideal\\Downloads\\5.xlsx"; var value = new Person { Name = "李四", Age = 11, Country = "中国" }; MiniExcel.SaveAsByTemplate("C:\\Users\\trueideal\\Downloads\\5_1.xlsx", template, value); }

注意:Excel模板中变量名区分大小写。

集合渲染 {{集合名称.栏位名称}}

image.png

C#
private void btnListTemplate_Click(object sender, EventArgs e) { string template = "C:\\Users\\trueideal\\Downloads\\5.xlsx"; // 创建一个包含数据的列表 var data = new { P = new[] { new Person {Name= "John Doe",Age= 30,Country= "USA" }, new Person{ Name= "Alice Smith",Age= 25,Country= "Canada" }, new Person { Name= "Bob Johnson", Age= 35, Country= "UK" } } }; MiniExcel.SaveAsByTemplate("C:\\Users\\trueideal\\Downloads\\5_2.xlsx", template, data); }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!