EPPlus与Excel完美的结合
本文转载:http://www.cnblogs.com/olartan/archive/2012/07/14/2591711.html
笔者近期在公司项目中需要生产比较复杂的Excel报表, 问题点是单个Excel文件中必须能包含多个sheet, 按照以前项目的经验, 此情况需要使用MS Office组件实现。但是客观情况是office组件其版本兼容问题比较多(Excel版本不一致导致无法使用、excel进程无法回收、导致w3wp 进程崩溃等), 无法把控摒弃之。
在codeplex上看到EPPlus组件, 好像可以解决上述问题。
EPPlus使用的是Open Office XML Format, 其读写支持Excel 2003/2007。
项目地址:http://epplus.codeplex.com/
在asp.net页面上导出Excel代码如下:

public static void DumpExcel(HttpContext context,string flieName,IDictionary<string,DataTable> dict)
{
using (ExcelPackage pck = new ExcelPackage())
{
foreach (var kp in dict)
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add(kp.Key); //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(kp.Value, true); ////Format the header for column 1-3
//using (ExcelRange rng = ws.Cells["A1:C1"])
//{
// rng.Style.Font.Bold = true;
// rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
// rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
// rng.Style.Font.Color.SetColor(Color.White);
//} ////Example how to Format Column 1 as numeric
//using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
//{
// col.Style.Numberformat.Format = "#,##0.00";
// col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
//} }
//Write it back to the client
var data = pck.GetAsByteArray();
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("content-disposition", "attachment; filename=" + flieName + ".xlsx");
context.Response.AddHeader("Content-Length", data.Length.ToString());
context.Response.BinaryWrite(data);
}
}

参数dict传递的是sheetname和DataTable的键值对!
EPPlus与Excel完美的结合的更多相关文章
- C# NPOI导出Excel和EPPlus导出Excel比较
系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...
- 使用EPPLUS操作EXcel
使用EPPLUS操作EXcel 时间 2014-11-06 19:28:01 姜糖水 原文 http://www.cnphp6.com/archives/58648 主题 Excel 1 下载Ep ...
- 用EPPlus 读取excel,代码出错, the given key is not present in the dictionary
using (ExcelPackage ep = new ExcelPackage(new FileInfo(path))) { ExcelWorksheet ws = ep.Workbook.Wor ...
- .net core 导出Excel(epplus 创建excel )
[Route("getopenfrequencyexcel")] [HttpGet] public IActionResult GetOpenFrequencyExcel(int ...
- C# NPOI导出Excel和EPPlus导出Excel
转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...
- C#使用第三方组件Epplus操作Excel表
Epplus操作Excel基础详解 1.什么是Epplus Epplus是一个使用Open Office XML文件格式,能读写Excel2007/2010文件的开源组件,在导出Excel的时候不需要 ...
- C# 使用Epplus导出Excel [5]:样式
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [4]:合并指定行
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [3]:合并列连续相同数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
随机推荐
- 阿里云主机建立SWAP分区脚本
工具:add_swap.sh 所有执行的脚本都需要root身份来执行,执行方法:以root身执行命令:bash xxx.sh 功能:自动检测系统swap分区大小,交换分区大小不合理则自动新增并挂 ...
- android 布局权重问题(转载)
//权重和父容器orientation有关 horizontal 指水平方向权重 android:layout_width vertical 指垂直方向权重 android:layout_he ...
- unidac连接FireBird数据库
dbconn: TUniConnection; with dbconn do begin if not Connected then begin ...
- JNI/NDK开发指南(二)——JVM查找java native方法的规则
通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.Unsatis ...
- CF_91B
题目意思是这样的:给定n个整数,求第i个数右边的距离它最远的比它小的数的下标之差然后再减1. 这里既然是需要知道距离该数最远的下标,可以从右至左扫描一遍,然后按照单调递减的顺序入栈,即只把比栈顶元素小 ...
- OA学习笔记-005-Spring2.5与struts2.1整合
一.单独测试strust 1.action package cn.itcast.oa.test; import org.springframework.context.annotation.Scope ...
- 值得推荐的C/C++框架和库 very good
[本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看看现有的轮子吧 值得学习的C语 ...
- IBinder类的中文翻译
远程对象的基础接口,是一个为了在执行进程中和进程间调用时的高性能,而设计的轻量级远程调用机制的核心部分.这个接口描述了和远程对象交互的抽象协议.不要直接实现这个接口,而是通过继承Binder来实现. ...
- hadoop2.2编程: 重写comparactor
要点: 类型比较在hadoop的mapreduce中非常重要,主要用来比较keys; hadoop中的RawComparator<T>接口继承自java的comparator, 主要用来比 ...
- redhat 6.5 使用其它Linux镜像源的yum源
最近在虚拟机里装了rhel_6.5_x86_64,发现竟然不自带g++,没办法只好 “yum install gcc-c++”,无奈失败,原因是redhat的yum是收费的... 于是打算怒装其它免费 ...