mvc导出excel记录

简介: 前言: 记录这篇使用记录,是为了方便以后学习查阅和让没有使用过的人了解一下,其中不足还请见谅。不是很全的文章,大神请绕行。在项目中我们或多或少的会遇到数据导出到excel表格以便线下查看或者记录一些需要的数据信息。

前言:

记录这篇使用记录,是为了方便以后学习查阅和让没有使用过的人了解一下,其中不足还请见谅。不是很全的文章,大神请绕行。
在项目中我们或多或少的会遇到数据导出到excel表格以便线下查看或者记录一些需要的数据信息。我所知道的有两个EPPlus和NPIO这两个插件。
NPIO这个恕在下才疏学浅还没有使用不好多说,今天我就来说一下EPPlus。
EPPlus准备:
EPPlus官网地址:https://github.com/JanKallman/EPPlus
下载之后,我们在程序添加程序集之后在需要使用的地方添加一下引用:
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;
这几个只是最基础的引用控件,你要使用更多当然需要增加更多命名空间比如图标,需要在增加using OfficeOpenXml.Drawing.Chart;
附上EPPlus支持功能列表:

好了废话不多说进入正题。

使用EPPlus:

1.创建存放文件夹
//创建存放Excel的文件夹
string path = Server.MapPath("~/Upload/Excel/MenuInfor/");
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".xlsx";
pathFileName = path + fileName;

//如果上传目录不存在就创建

        //如果上传目录不存在就创建
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }

        FileInfo newFile = new FileInfo(pathFileName);
        if (newFile.Exists)
        {
            newFile.Delete();
            newFile = new FileInfo(pathFileName);
        }

2.创建工作簿
有了存放位置之后就是创建真正的excel文件了,注意这里用到using哦,这是必须的哦。创建工作薄并存入上面所说的位置
using (ExcelPackage package = new ExcelPackage(newFile))
{
//这里面是excel所有的操作

3.创建Sheet表格
也就是我们所说的选项卡,这里才是我们存放数据的展现层。
ExcelWorksheet workSheet = package.Workbook.Worksheets.Add("这里是选项卡名称");
4.开始填充

#region 添加表头
/*添加表头*/
workSheet.InsertRow(1, 1);
using (var range = workSheet.Cells[1, 1, 1, 4])
{
range.Merge = true;
range.Style.Font.SetFromFont(new Font("Britannic Bold", 18, FontStyle.Regular));
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(184, 204, 228));
range.Style.Font.Color.SetColor(Color.Black);
range.Value = "菜单导出信息";
}
#endregion

#region 设置列宽
//设置列宽
workSheet.Column(1).Width = 30;
workSheet.Column(2).Width = 30;
workSheet.Column(3).Width = 30;
workSheet.Column(4).Width = 20;
#endregion
#region 设置标题
/*设置标题*/
workSheet.Cells[2, 1].Value = "菜名";
workSheet.Cells[2, 2].Value = "材料名称";
workSheet.Cells[2, 3].Value = "材料类别";
workSheet.Cells[2, 4].Value = "材料所需克数";
#endregion

using (var range = workSheet.Cells[2, 1, 2, 4])
{
range.Style.Font.Bold = true;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(70, 130, 180));
range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(70, 130, 180));
range.Style.Font.Color.SetColor(Color.White);
//range.AutoFilter = true;
}

#region 设置单元格内容
/*设置单元格内容*/
int row = 3;
foreach (FoodMenuInfor item in foodInforList)
{
var biginRow = row;
var menuDataList = menuData.Where(u => u.menuId == item.id);
//对名称进行查询
if (!string.IsNullOrEmpty(stuffName))
{
menuDataList = menuDataList.Where(a => a.stuffName.Contains(stuffName));

}
//对类别进行查询
if (!string.IsNullOrEmpty(stuffType))
{
menuDataList = menuDataList.Where(a => a.stuffType == stuffType);
}
menuDataList.OrderByDescending(b => b.addTime);
foreach (var loop in menuDataList)
{
workSheet.Cells[row, 1].Value = "";
workSheet.Cells[row, 2].Value = loop.stuffName;
workSheet.Cells[row, 3].Value = loop.stuffType;
workSheet.Cells[row, 4].Value = loop.requireNum;
row++;
}
if (menuDataList.Count() == 0)
{
workSheet.Cells[row, 1].Value = "";
workSheet.Cells[row, 2].Value = "";
workSheet.Cells[row, 3].Value = "";
workSheet.Cells[row, 4].Value = "";
row++;
}
//合并园区行头
workSheet.Cells[biginRow, 1, row - 1, 1].Merge = true;
workSheet.Cells[biginRow, 1, row - 1, 1].Value = item.menuName;
}
#endregion

5.终于内容写完了
内容添加完了,我就稍微设置了下文字水平居中和垂直居中,最后进行保存
workSheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//水平居中
workSheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;//垂直居中
package.Save();
最后上一下结果。

 

资料借鉴:

Wico's Blog大神: http://www.mamicode.com/info-detail-63790.html
下面是pengtan大神使用NPOI和EPPlus的对比:http://www.cnblogs.com/tanpeng/p/6155749.html
使用那个全凭自己喜好吧,对比自己了解就好。

作者:YanBigFeg —— 颜秉锋

出处:http://www.cnblogs.com/yanbigfeg

本文版权归作者和博客园共有,欢迎转载,转载请标明出处。如果您觉得本篇博文对您有所收获,觉得小弟还算用心,请点击右下角的 [推荐],谢谢!

目录
相关文章
|
16天前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
23 1
|
18天前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
123 3
|
1月前
|
Java API Apache
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
41 4
|
2月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
74 6
|
3月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
2月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
370 5
|
2月前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
520 0
|
3月前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
52 2