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= ...
随机推荐
- OOP3(继承中的类作用域/构造函数与拷贝控制/继承与容器)
当存在继承关系时,派生类的作用域嵌套在其基类的作用域之内.如果一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义 在编译时进行名字查找: 一个对象.引用或指针的 ...
- bzoj2440完全平方数
题目链接 上来先吐槽题面!!!!!! 你跟我说$1$不是完全平方数昂? 看了半天样例啊. 活生生的半天$……$ 莫比乌斯 反演 函数容斥一下,每次二分就好 反正本宝宝不知道反演是啥. 每次判断应 ...
- java集合类学习笔记之ArrayList
1.简述 ArrayList底层的实现是使用了数组保存所有的数据,所有的操作本质上是对数组的操作,每一个ArrayList实例都有一个默认的容量(数组的大小,默认是10),随着 对ArrayList不 ...
- 使用webpack开发ES6程序的正确姿势
1.cnpm install babel-loader babel-core babel-preset-es2015 -D 2.cnpm install babel-plugin-transform- ...
- 条目七《如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉》
如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象. STL的容器虽然比较智能 ...
- google 浏览器的Debug 调试工具使用
一个写后台的人 有一天要自己找前台页面的错误 于是乎就得会前台debug 于是乎我不会 就在网上找了一些资料看 不就是几个按钮 嘛 有啥难的 上图片 1.Google 浏览器 F12 就可以看到 ...
- 二 ASP.NET MVC 第一个程序 hello world
二 ASP.NET MVC 第一个程序 hello world https://blog.csdn.net/xmroom/article/details/51335917 我使用的Visual s ...
- Android TextUtils工具类的使用
1.采用File类,在指定目录下读写数据 java后台代码为: (1)向app的/data/data/com.example.lucky.helloworld目录下写入文本(涉及IO的读写操作) pa ...
- bzoj3262 陌上花开 cdq分治(入门)
题目传送门 思路:cdq分治处理偏序关系的模板题,主要就是学cdq分治吧,还在入门中. 代码其实也很好理解,记得树状数组操作的上限是 z的最大值,不是n的最大值,这个细节wa了好久. #include ...
- ASP.Net Core 发布ABP项目遇到的错误
1.HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作 ...