在网上查了很多导出 excel 文件的方式,最后有很多的评论说 miniexcel 很不错,占用内存少等优点,现在记录一下自己初学小白的步骤:
我是有 C# Winform建产一个窗口,再窗口里填加两个按键【打开 Excel】【导出 Excel】, 再加一个【dataGridView】用于显示打开的 Excel 表;
1、安装:
在项目中添加 NuGet 包,在浏览中输入 MiniExcel,找到这个包安装即可;
2、添加引用:
using MiniExcelLibs;
3、建立一个存储类【ExcelContent】,用于读出 excel 的表头:
public class ExcelContent
{
public int Id { get; set; }
public string Name { get; set; }
public int Max_h { get; set; }
public int Min_h { get; set; }
public int Max_w { get; set; }
public int Min_w { get; set; }
public double Folded { get; set; }
public DateTime Create_time { get; set; }
}
这里的每一子项,对应表里的每一列,可加可少;(excel 里有的,这里可以没有)
4、一个打开 excel 文件的按键事件:
private void btnOpenFile_Click(object sender, EventArgs e) //点键打开文件按键,
{
var openFile=new OpenFileDialog { Filter="Excel File|*.xls;*.xlsx"}; //弹出选文件窗口
if(openFile.ShowDialog() == DialogResult.OK ) //判断是不是成功打开文件
{
labelFilePath.Text = openFile.FileName; //把这个打开的文件路径显示在 label 中
//下面这个就是 miniExecl查询打开的文件并转换为【ToList】赋值给 openExcelFile
//有网友说,tolist 是把打开的 excel 文件一次性读到内存里,有点耗费内存;
var openExcelFile=MiniExcel.Query<ExcelContent>(openFile.FileName).ToList();
dataGridView1.DataSource = openExcelFile; //赋值给 dataGridView1
}
}
成功读出 excel 表;
5、导出 excel:
private void btnOutput_Click(object sender, EventArgs e) //导出按键
{
SaveFileDialog saveFileDialog = new SaveFileDialog() //导出选择路径
{
Filter = "Excel File|*.xlsx" //默认保存的文件类型
};
if (saveFileDialog.ShowDialog() == DialogResult.OK) //判断是不是选择路径有没有错;
{
if (saveFileDialog.FileName == null) return; //如果用户输入的保存文件名是空,跳出
//MiniExcel 的保存功能,【saveFileDialog.FileName】路径、【dataGridView1.DataSource】把这个数据写入 excel,【overwriteFile: true】文件可写
MiniExcel.SaveAs(saveFileDialog.FileName, dataGridView1.DataSource, overwriteFile: true);
}
}
保存成功;
下面的链接是MiniExcel 的官方学习文档,有看到这个学习笔记的同学、老师们可以共同学习!!【帮我把这篇文章点个赞哈,谢谢!!】
MiniExcel/README.zh-CN.md at master · mini-software/MiniExcel · GitHub