NPOI之C#下载Excel
Java中这个类库叫POI,C#中叫NPOI,很多从Java一直到.Net平台的类库为了区别大部分都是在前面加个N,比如Hibernate和NHibernate。
一、使用NPOI下载大致分以下步骤:
1、创建workbook
2、创建sheet
3、创建row和cell
4、填充数据
5、设置cell的样式和字体
二、HSSFWorkbook和XSSFWorkbook 两者用法基本一样
HSSFWorkbook 创建的是Excel2003
HSSFSheet、HSSFCellStyle、HSSFFont等
XSSFWorkbook 创建的是Excel2007
XSSFSheet、XSSFCellStyle、XSSFFont等
三、行或列合并
sheet.AddMergedRegion(new CellRangeAddress(0, 1, 0, 0)); //起始行 结束行 起始列 结束列
sheet.GetRow(0).GetCell(0).SetCellValue("姓名");//赋值
赋值时必须使用合并后左上角单元格的行列坐标
四、代码(以Excel2003为例):
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
public ActionResult Index()
{ List<string> headList = new List<string>();
headList.Add("语文");
headList.Add("数学");
headList.Add("英语");
headList.Add("政治"); List<string> nameList = new List<string>();
nameList.Add("张三");
nameList.Add("李四");
nameList.Add("王五");
nameList.Add("赵六");
nameList.Add("胜七");
nameList.Add("朱重八");
nameList.Add("九喇嘛"); MemoryStream memoryStream = new MemoryStream();
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.CreateSheet();
//创建单元格设置对象
HSSFCellStyle cellStyle = workbook.CreateCellStyle();
//设置水平、垂直居中
cellStyle.Alignment = HSSFCellStyle.ALIGN_CENTER;
cellStyle.VerticalAlignment = HSSFCellStyle.VERTICAL_CENTER;
//单元格填充颜色
cellStyle.FillForegroundColor = HSSFColor.PALE_BLUE.index;
cellStyle.FillPattern = HSSFCellStyle.SOLID_FOREGROUND;
//设置边框
cellStyle.BorderBottom = HSSFCellStyle.BORDER_THIN;
cellStyle.BorderLeft = HSSFCellStyle.BORDER_THIN;
cellStyle.BorderRight = HSSFCellStyle.BORDER_THIN;
cellStyle.BorderTop = HSSFCellStyle.BORDER_THIN; //创建设置字体对象
HSSFFont font = workbook.CreateFont();
font.FontHeightInPoints = ;//设置字体大小
font.Boldweight = short.MaxValue; //加粗
font.FontName = "宋体";
cellStyle.SetFont(font); //创建Excel行和单元格
for (int i = ; i < nameList.Count + ; i++)
{
HSSFRow newRow = sheet.CreateRow(i);
for (int j = ; j <headList.Count+; j++)
{
newRow.CreateCell(j);
}
} //设置Excel表头
sheet.AddMergedRegion(new CellRangeAddress(, , , )); //起始行 结束行 起始列 结束列
sheet.GetRow().GetCell().CellStyle = cellStyle;
sheet.GetRow().GetCell().CellStyle = cellStyle;
sheet.GetRow().GetCell().SetCellValue("姓名");//姓名 sheet.AddMergedRegion(new CellRangeAddress(, , , )); //起始行 结束行 起始列 结束列
sheet.GetRow().GetCell().CellStyle = cellStyle;
sheet.GetRow().GetCell().CellStyle = cellStyle;
sheet.GetRow().GetCell().SetCellValue("课程");//课程 for (int i = ; i < headList.Count; i++)
{
sheet.GetRow().GetCell(i + ).CellStyle = cellStyle;
sheet.GetRow().GetCell(i + ).SetCellValue(headList[i]);//具体课程
} //导入数据
for (int i = ; i < nameList.Count; i++)
{
sheet.GetRow(i + ).GetCell().SetCellValue(nameList[i]);
for (int j = ; j < ; j++)
{
sheet.GetRow(i + ).GetCell(j+).SetCellValue(i*j);
}
} workbook.Write(memoryStream);
memoryStream.Seek(,SeekOrigin.Begin); Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode("test.xls"));
Response.ContentType = "application/octet-stream";
Response.Charset = "gb2312";
Response.ContentEncoding = Encoding.UTF8;
Response.BinaryWrite(memoryStream.GetBuffer());
Response.Flush();
Response.End();
return new EmptyResult();
}
最后结果:

转载请注明出处!
NPOI之C#下载Excel的更多相关文章
- c#.net 使用NPOI导入导出标准Excel (asp.net winform csharp)
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- NPOI导出数据到Excel
NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微 ...
- ASP.NET- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- 使用NPOI导入导出标准Excel
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- NPOI插入图片到excel指定单元格
先看效果图 下载NPOI组件(2.0以上支持.xlsx和.xls的excel,2.0以下只支持.xls) NPOI下载官网http://npoi.codeplex.com 下载解压,里面有个dotne ...
- 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)
前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...
- NPOI复制模板导出Excel
本人菜鸟实习生一枚,公司给我安排了一个excel导出功能.要求如下:1.导出excel文件有样式要求:2.导出excel包含一个或多个工作表:3.功能做活(我的理解就是excel样式以后可能会变方便维 ...
- 360浏览器下载excel问题解决方式
亲们有没有碰到过今天我遇到的这件事. 如果使用简单的链接.或者get方式提交的表单,去下载excel,那么360浏览器就会有问题. 问题是:它没把我用java生成的excel表格下载,而是去把我的列表 ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
随机推荐
- cinder create volume的流程-scheduler调度
创建 Volume 时,cinder-scheduler 会基于容量.Volume Type 等条件选择出最合适的存储节点,然后让其创建 Volume. 1.cinder-scheduler配置相关项 ...
- 题解 P1436 【棋盘分割】
题目链接 其实呢大致思路和下面的大佬们都很像.发这篇题解的目的就是加了一点~~优化~~骗分技巧. 转移方程: 设$dp[i][j][x][y][k]$表示左上$(i,j)$,右下$(x,y)$,第$k ...
- Leetcode 413. Arithmetic Slice 算术序列切片(动态规划,暴力)
Leetcode 413. Arithmetic Slice 算术序列切片(动态规划,暴力) 题目描述 如果一个数组1.至少三个元素2.两两之间差值相同,那么这个数组就是算术序列 比如下面的数组都是算 ...
- JDK 5 ~ 10 新特性倾情整理!
JDK 5 ~ 10 新特性倾情整理! 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对JDK ...
- Qt 学习之路 2(73):Qt 线程相关类
Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类 豆子 2013年11月26日 Qt 学习之路 2 7条评论 希 ...
- [HNOI/AHOI2018]排列
[Luogu4437] 如果\(a[i]=j\)则序列\(p[]\)中\(j\)必须排在\(i\)前面,如果\(j\)不在范围内则不管,求一个式子\(\sum_{i=1}^n iw_{p[i]}\)的 ...
- 【算法笔记】B1047 编程团体赛
1047 编程团体赛 (20 分) 编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队 ...
- 【算法笔记】B1026 程序运行时间
1026 程序运行时间 (15 分) 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗 ...
- notepad++配置编译运行java
点击插件->Plugin Manager->show plugin manager : 选择NppExec,选择install,就将这个插件下载下来了. 这个时候会重启notepad++: ...
- hdu6437 Videos 费用流
题目传送门 题目大意: 给出n,每天有n个小时.有m种电影,每个电影有开始时间和结束时间,和01两种种类,k个人,每一部电影只能被一个人看,会获得一个快乐值wi,如果一个人连续看两部相同种类的电影,快 ...