文档章节

.net使用NPOI导出数据到excel

TomsonQiang
 TomsonQiang
发布于 2014/06/20 13:53
字数 302
阅读 57
收藏 0
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;

/// <summary>
/// Excel_Export_Class 的摘要说明
/// </summary>
public class Excel_Export_Class
{
	public Excel_Export_Class()
	{
		//
		// TODO: 在此处添加构造函数逻辑
		//
	}

    /// <summary>
    /// 类版本
    /// </summary>
    public string version
    {
        get { return "0.1"; }
    }
    readonly int EXCEL03_MaxRow = 65535;

    /// <summary>
    /// 将DataTable转换为excel2003格式。
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public byte[] DataTable2Excel(DataTable dt, string sheetName)
    {

        IWorkbook book = new HSSFWorkbook();
        if (dt.Rows.Count < EXCEL03_MaxRow)
            DataWrite2Sheet(dt, 0, dt.Rows.Count - 1, book, sheetName);
        else
        {
            int page = dt.Rows.Count / EXCEL03_MaxRow;
            for (int i = 0; i < page; i++)
            {
                int start = i * EXCEL03_MaxRow;
                int end = (i * EXCEL03_MaxRow) + EXCEL03_MaxRow - 1;
                DataWrite2Sheet(dt, start, end, book, sheetName + i.ToString());
            }
            int lastPageItemCount = dt.Rows.Count % EXCEL03_MaxRow;
            DataWrite2Sheet(dt, dt.Rows.Count - lastPageItemCount, lastPageItemCount, book, sheetName + page.ToString());
        }
        MemoryStream ms = new MemoryStream();
        book.Write(ms);
        return ms.ToArray();
    }
    private void DataWrite2Sheet(DataTable dt, int startRow, int endRow, IWorkbook book, string sheetName)
    {
        ISheet sheet = book.CreateSheet(sheetName);
        IRow header = sheet.CreateRow(0);
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            ICell cell = header.CreateCell(i);
            string val = dt.Columns[i].Caption ?? dt.Columns[i].ColumnName;
            cell.SetCellValue(val);
        }
        int rowIndex = 1;
        for (int i = startRow; i <= endRow; i++)
        {
            DataRow dtRow = dt.Rows[i];
            IRow excelRow = sheet.CreateRow(rowIndex++);
            for (int j = 0; j < dtRow.ItemArray.Length; j++)
            {
                excelRow.CreateCell(j).SetCellValue(dtRow[j].ToString());
            }
        }

    }
}

//调用导出excel,并直接下载

    dt = GetPageList.ExecuteSqlReTable(sql);
        if (dt.Rows.Count > 0)
        {
            Excel_Export_Class excel = new Excel_Export_Class();
            string fileName = "优酷订购关系";
            byte[] data = excel.DataTable2Excel(dt, fileName);
            fileName += ".xls";
            if (Request.Browser.Browser == "IE")
                fileName = HttpUtility.UrlEncode(fileName);
            Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
            Response.BinaryWrite(data);
        }

© 著作权归作者所有

共有 人打赏支持
TomsonQiang
粉丝 0
博文 24
码字总数 302
作品 0
西安
程序员
私信 提问
mvc导出excel

导出excel,怎么导出呢?这个原理是什么呢? 首先在html页面添加单击方法,触发controllers中的方法。怎么触发controllers中导出的方法呢? 在js中的事件中可以这样写。 function xport() {...

iwuio
01/08
0
0
.NET读写Excel工具Spire.Xls使用入门介绍

在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E...

李朝强
2016/06/29
41
0
让 .NET 更方便的导入导出 Excel

让 .Net 更方便的导入导出Excel Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于是就自己造...

WeihanLi
11/22
0
0
ExcelReport第一篇:使用ExcelReport导出Excel

导航 目 录:基于NPOI的报表引擎——ExcelReport 下一篇:ExcelReport源码解析 概述 本篇将通过导出学生成绩的示例演示“使用ExcelReport导出Excel”的步骤。 示例(导出学生成绩明细) 步骤...

hanzhaoxin
2015/01/29
0
0
.Net Core下基于NPOI对Excel、Word操作封装

框架与依赖 框架:.NET Standard 2.0 依赖:DotNetCore.NPOI https://github.com/dotnetcore/NPOI http://www.cnblogs.com/savorboard/p/netcore-npoi.html Excel导入(ExcelImportService)......

holdengong
11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
59分钟前
4
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
4
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部