NPOI之C#下载Excel

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 = 16;//设置字体大小
            font.Boldweight = short.MaxValue; //加粗
            font.FontName = "宋体";
            cellStyle.SetFont(font);

            //创建Excel行和单元格
            for (int i = 0; i < nameList.Count + 2; i++)
            {
                HSSFRow newRow = sheet.CreateRow(i);
                for (int j = 0; j <headList.Count+1; j++)
                {
                    newRow.CreateCell(j);
                }
            }

            //设置Excel表头
            sheet.AddMergedRegion(new CellRangeAddress(0, 1, 0, 0)); //起始行  结束行 起始列 结束列
            sheet.GetRow(0).GetCell(0).CellStyle = cellStyle;
            sheet.GetRow(1).GetCell(0).CellStyle = cellStyle;
            sheet.GetRow(0).GetCell(0).SetCellValue("姓名");//姓名

            sheet.AddMergedRegion(new CellRangeAddress(0, 0, 1, 4)); //起始行  结束行 起始列 结束列
            sheet.GetRow(0).GetCell(1).CellStyle = cellStyle;
            sheet.GetRow(0).GetCell(4).CellStyle = cellStyle;
            sheet.GetRow(0).GetCell(1).SetCellValue("课程");//课程

            for (int i = 0; i < headList.Count; i++)
            {
                sheet.GetRow(1).GetCell(i + 1).CellStyle = cellStyle;
                sheet.GetRow(1).GetCell(i + 1).SetCellValue(headList[i]);//具体课程
            }

            //导入数据
            for (int i = 0; i < nameList.Count; i++)
            {
                sheet.GetRow(i + 2).GetCell(0).SetCellValue(nameList[i]);
                for (int j = 0; j < 4; j++)
                {
                     sheet.GetRow(i + 2).GetCell(j+1).SetCellValue(i*j);
                }
            }

            workbook.Write(memoryStream);
            memoryStream.Seek(0,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();
        }

最后结果:

转载请注明出处!

时间: 2024-08-06 15:37:54

NPOI之C#下载Excel的相关文章

使用NPOI导入导出标准Excel

尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 直接导出html,修改后缀名为.xls,这个方法有点像骗人的把戏,而且不能再导入 使用Jet OLEDB引擎来进行导入导出,完全使用sql语句来进行操作,缺点能控制的东西非常有限,比如格式就难以控制 使用Office COM组件进行导入导出,对环境依赖性太强(如"检索 COM 类工厂-"错

NPOI导出数据到Excel

NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 方法 先去官网:http://npoi.codeplex.com/下载需要

c#.net 使用NPOI导入导出标准Excel (asp.net winform csharp)

尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 直接导出html,修改后缀名为.xls,这个方法有点像骗人的把戏,而且不能再导入 使用Jet OLEDB引擎来进行导入导出,完全使用sql语句来进行操作,缺点能控制的东西非常有限,比如格式就难以控制 使用Office COM组件进行导入导出,对环境依赖性太强(如“检索 COM 类工厂…”错误):且需

NPOI插入图片到excel指定单元格

先看效果图 代码 //创建一个工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个sheet ISheet sheet1 = workbook.CreateSheet("sheet1"); // 设置列宽,excel列宽每个像素是1/256 sheet1.SetColumnWidth(0, 18 * 256); sheet1.SetColumnWidth(1, 18 * 256); IRow rowHeader = sheet1.

在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF

前端下载excel文件功能的三种方法

1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这种方式比较适用于该数据需要能够导出下载并且同时要展现在页面的场景 2 通过form表单接收文件 如果后端已经处理成了excel,就不需要前端在处理生成,但是Ajax能够返回的数据格式只能为html,script,json,xml,不能直接接受excel文件,如果你直接通过ajax去获取文件就会报错.

用NPOI从DataBase到Excel &#39;2

NPOI的C# Helper代码2 1 public static MemoryStream ExportXls(DataTable dt) 2 { 3 HSSFWorkbook wk = new HSSFWorkbook(); 4 ISheet sheet = null; 5 6 string sheetName = "Sheet1"; 7 if (!string.IsNullOrEmpty(dt.TableName)) 8 { 9 sheetName = dt.TableName;

angularJS通过post方法下载excel文件

最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularjs-http-post-convert-binary-to-excel-file-and-download ,改动了里面部分代码搞定. 详细代码: $http.post($rootScope.restful_api.last_output_excel,body_data,{responseType:

使用DateSet下载Excel

这里我们使用Microsoft.Office.Interop.Excel.dll下载Excel,没有引用可点击下载 关键代码,ExcelHelper类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Windows.Forms; using System.Runtime.InteropServices; usi