Java中这个类库叫POI,C#中叫NPOI,很多从Java一直到.Net平台的类库为了区别大部分都是在前面加个N,比如Hibernate和NHibernate。

npoi下载地址

一、使用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();
}

最后结果:

转载请注明出处!

最新文章

  1. Python标准模块--concurrent.futures
  2. 3D坦克大战游戏源码
  3. ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
  4. Ubuntu vi 常用命令集合
  5. 关于reset.css的疑问:为什么一定要重置浏览器样式?
  6. yum简单安装salt master与minion
  7. Android安全机制(2) Android Permission权限控制机制
  8. 长方柱类【C++ 类定义】
  9. http请求 405错误 方法不被允许 (Method not allowed)
  10. Android Error:Execution failed for task &#39;:app:preDebugAndroidTestBuild&#39;. &gt; Conflict with dependency
  11. Navier-Stokes equations (Lectured by Luis Caffarelli)
  12. css 获取从第n个开始,之后的所有元素
  13. [C++ Primer Plus] 第3章、处理数据(二)课后习题
  14. js正则表达式验证身份证号和密码
  15. javaWeb的基础知识
  16. mysql主从配置思路
  17. [ATL/WTL]_[初级]_[关于graphics.DrawImage绘图时显示不正常的问题]
  18. vsearch 去除重复序列和singleton 序列
  19. HDU 4746 Mophues(莫比乌斯反演)
  20. curl post数据

热门文章

  1. ubuntu14.04,安装Chrome(谷歌浏览器)
  2. 解决Turn your Session into FlushMode.COMMIT/AUTO or remove &#39;readOnly&#39; marker fro问题
  3. 条目十三《尽量使用vector和string来代替使用数组》
  4. 关于 SimpleMembership 中 CreateDate 的问题
  5. SpringCloud-Zuul搭建
  6. Linux磁盘占满 no space left on device
  7. 一些很有意思的JS现象
  8. 【算法笔记】B1001 害死人不偿命的(3n+1)猜想
  9. .NET 海量数据并发处理
  10. BZOJ - 3489 KD树 范围计数 空间思维转换