导出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
使用那个全凭自己喜好吧,对比自己了解就好。
导出excel记录的更多相关文章
- mvc导出excel记录
前言: 记录这篇使用记录,是为了方便以后学习查阅和让没有使用过的人了解一下,其中不足还请见谅.不是很全的文章,大神请绕行.在项目中我们或多或少的会遇到数据导出到excel表格以便线下查看或者记录一些需 ...
- 记录一个 C# 导出 Excel 的坑
Ø 简介 其实该文章并没有什么技术含量,只是记录下个人心得.在以后有朋友遇到类似问题,可以借鉴下,或者遇到相同问题时的提供个参考方向. 也算我的一个经历吧,这个问题我花了足足一天多的时间才找到问题, ...
- Oracle导出excel
oracle导出excel(非csv)的方法有两种,1.使用sqlplus spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...
- [转]Java中导入、导出Excel
原文地址:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样 ...
- 多线程异步导出excel
先新建一个执行类 @Service public class MultiService { private static final Logger logger = LoggerFactory.get ...
- MyXls导出Excel的各种设置
MyXls是一个操作Excel的开源类库,支持设置字体.列宽.行高(由BOSSMA实现).合并单元格.边框.背景颜色.数据类型.自动换行.对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单 ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- NPOI、MyXls、Aspose.Cells 导入导出Excel(转)
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
随机推荐
- ORM对象关系映射之GreenDAO源码解析
上一篇我们学习了GreenDAO的CRUD基本操作,可以说是非常的方便的,而且GreenDAO的效率和性能远远高于其它两款流行的ORM框架,下面是我从官网找的一副它们三个ORM框架之间的性能测试的直观 ...
- 实战:通过ViewModel规范TableView界面开发
TableView界面可以说是移动App中最常用的界面之一了,物品/消息列表.详情编辑.属性设置--几乎每个app都可以看到它的身影.如何优美地实现一个TableView界面,就成了iOS开发者的必备 ...
- 原生的zfs在rhel6上的安装
原生的zfs在rhel6上的安装 ZFS(Zettabyte File System)作为一个全新的文件系统,全面抛弃传统File System + Volume Manager + Storage( ...
- PS 图像特效-非线性滤波器
利用非线性滤波器,使图像的色彩凝块,形成一种近似融化的特效. clc; clear all; addpath('E:\PhotoShop Algortihm\Image Processing\PS A ...
- 【34】包含min函数的stack
题目: 实现一个包含min函数的栈,min和push,pop都是o(1)时间 思路: 采用一个辅助的栈,来存储不同阶段的最小值 - 代码: push(int value){ //data是数据栈,mi ...
- LeetCode(25)-symmetric tree
题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). F ...
- gcc如何生成预编译头文件(.gch)
1 建立comm.h 2 main.c中包含comm.h : #include "comm.h" 3 gcc -o comm.h.gch comm.h(低版本gcc会有bug) 4 ...
- 我的.net并发系列文章及项目经验整理
一直在关注研究.net下的并发处理,之前也发布过几篇文章,今天就都整理下. 使用BlockingCollection来做并发处理,同时增加并发队列来做并发处理时的退出判断: 你真的知道.NET Fra ...
- 简单poi创建execl
Workbook workbook = new HSSFWorkbook();// 创建一个Excel文件 Workbook workbook = new XSSFWorkbook();// 创建一个 ...
- 万水千山ABP - 时区问题
关于时间和时区问题,后面的参考文章中有详细的描述. 我遇到的问题是: 在MVC视图页面中,显示记录的生成时间 CreationTime <div> @Model.CreationTime ...