mvc导出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
使用那个全凭自己喜好吧,对比自己了解就好。

原文地址:https://www.cnblogs.com/yanbigfeg/p/9233345.html

时间: 2024-08-02 20:56:37

mvc导出excel记录的相关文章

ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指定目录,然后提供下载. 效果如下: 选中了多行,会导出多个工作簿sheet,一个汇总的,其他的就是明细数据. 这里我使用了NPOI组件来进行excel导出,下面是要几个封装好的类,从网上找的,然后修改了一下. GenerateSheet.cs using NPOI.SS.UserModel; usi

spring mvc 导出 excel

1 // js 触发导出 excel 方法 导出当前页的数据 含有条件查询的结果 2 // js 框架使用的 是 easyui 3 function doExport(){ 4 5 6 var optins = $("#grid").datagrid("getPager").data("pagination").options; 7 var page = optins.pageNumber; 8 var rows = optins.pageSiz

MVC导出Excel到客户端

MVC导出数据到Excel详解 今天为大家分享一个利用NPIO导出数据到Excel 客户端的例子!(刚毕业的小白,第一次写博,如有错误 还望各位大咖指正) 1.NPOI官方网站:(http://npoi.codeplex.com/) 需要引用的dll文件如下: 2.用到的ExcelHelper类: 1 using Common.Logging; 2 using NPOI.HPSF; 3 using NPOI.HSSF.UserModel; 4 using NPOI.HSSF.Util; 5 us

MVC导出Excel,提供下载Excel

类1: using System.Collections.Generic;using System.Data;using System.Web.Mvc;using System.IO;using System.Web.UI.WebControls;using System.Web;using System.Web.UI;using System.Drawing; namespace Base.ActionResult{    public class ExcelResult : System.W

菜鸟关于mvc导出Excel的想法

本人菜鸟一个,关于MVC生成Excel的一点想法.有错误请指教. 在视图上最终生成的table.添加下载excel按钮,用js或jq写当点击这个按钮执行查找页面上的<table>标签,并提交table的值.在控制器里写一个action用于接收返回的<table>的内容,进行处理生成excel文件,返回excel文件下载.

ASP.NET MVC导出excel

前端代码: 1 @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", new {warehouseInOutId = Model.Id},new {@class = "btn btn-primary pull-right"}) 后端代码 1 public void ExportWarehouseInOutDetailTable(long warehouseInOutId) 2

mvc导出EXCEL

/// <summary> /// 导出EXCEL /// </summary> /// <returns></returns> public ActionResult ExportExcel(FormCollection form) { //var sbHtml = new StringBuilder(); //sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'&

Mvc 导出 Excel(服务器不用安装呦!)

新公司,新接触,老方法,更实用. 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望更多的博友获益.不多说 .先上图,后上源码. 很简单的MVC4 的页面 献丑了 效果图 你猜了对了  我用的是 ClosedXml.NPOI  不是很新的东西! 看看代码怎么实现吧 ! 1.工厂封装直接调用: 1 public class ExportFactory 2 { 3 public

asp.net webform/mvc导出Excel通用代码

最近将自己在项目中经常用到的excel导出方法分析如下,如有不妥之处望他人指出,如果有更好的方法希望展示出来互相学习. //导出事件 protected void btnexcel_Click(object sender, EventArgs e) { //定义导出Excel的标题 List<string> tabletitle = new List<string>(); tabletitle.Add("企业注册号"); tabletitle.Add("