`
jilong-liang
  • 浏览: 481430 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

使用httphandler实现 NPOI从数据库导数据进Office Exce

阅读更多
using NPOI.HSSF.UserModel;
using System.Data.SqlClient;
using Model;
using System.Collections.Generic;
using BLL;
using NPOI.SS.UserModel;
namespace WebApp
{
    /// <summary>
    ///@Author:梁继龙
    ///@Date:2012/7/28
    ///@Description:用NPOI处理Excel一页超过6635行的Bug进行分页
   /// 官方:http://npoi.codeplex.com/下载npoi组件
    /// </summary>
    public class ExcelPageHandler : IHttpHandler  //一般处理文件Handler它类似servlet
    {
 
        public void ProcessRequest(HttpContext context)
        {
           
             int pageNum = 0; // 多少页
            int pageSize = 50000;//每頁五萬條數據、切记这个值不能大于65536,超过这个值Excel就报异常.请你测试一下这个数值.
            context.Request.ContentType = "application/x-excel";//request
            context.Response.ContentType = "application/x-excel";//Response
            string filename = HttpUtility.UrlEncode("下载数据.xls");//文件名进行url编码,防止乱码 
            context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
 
            string SQL = "where 1=1";
 
            List<Users> userList = new UsersBLL().ExcelPage(SQL);
            //计算出多少页
            pageNum = (userList.Count() % pageSize > 0) ? (userList.Count() / pageSize + 1) : (userList.Count() / pageSize);
 
            HSSFWorkbook workbook = (HSSFWorkbook)new HSSFWorkbook();
            //遍历每一页
            for (int i = 0; i < pageNum; i++)
            {
                // String[] topText = { "ID", "姓名", "密码", "地址" };
                HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("客户资料" + (i + 1) + "");//excel页
 
                //用三转符计算出多条数据
                int count = (i + 1) * pageSize > userList.Count() ? userList.Count() : (i + 1) * pageSize;
 
                //遍历头文信息
 
                //遍历从数据库读取每一页有多条数据页
                for (int z = 0, j = i * pageSize; j < count; j++, z++)
                {
                    // for (int k = 0, y = 0; k < topText.Length; k++, y++)
                    //{
                    HSSFRow row = (HSSFRow)sheet.CreateRow(z);  //创建第z行,这个值必须从零开始索引.
 
                    // row.CreateCell(y + 1).SetCellValue(topText[k].ToString());  //ID
                    /**
                     *在Java里面是E get(int index);    故 list.get(j);   List是一个接口
                     *在C# 里面是  T this[int index] { get; set; }  list[]  this代表本类 List是一个类
                     */
                    Users user = userList[j];
 
                    //在java里面的jxl.jar里面的 Label(int c, int r, String cont)  //c 列  r行 cont内容
                    row.CreateCell(0).SetCellValue(user.Id);//这里不能在CreateCell里面加上j或z
                    row.CreateCell(1).SetCellValue(user.UserName);
                    row.CreateCell(2).SetCellValue(user.Address);
                    //}
                }
            }
            workbook.Write(context.Response.OutputStream); //输入excle里面
        }
 
 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


 

  

 

 

--创建用户信息表
 
======================================测试SQL脚 
 
 
create database excel; --创建数据库
 
drop table userInfo; --删除表
 
create table userInfo
(
id int identity(1,1) not null primary key, --顾客编号,主键
username varchar(1000)not null,     --开户名
telephone varchar(1445)not null,      --联系电话格式xxxx-xxxxxxxx或手机号11位
address varchar(2550)   --居住地址,可选输入
)
--CREATE PROCEDURE p_customer AS 
Begin 
Declare @n bigint 
Declare @Sql nvarchar(225) 
set @n=0
while @n<1000000--导入十万条相同的数据
begin
--本数据作为测试.电话号码就用中文,字节会大点,来测试excel到底能存储多少M,不够可以自己改表属性
Set @Sql='Insert into userInfo Values(''你好!Excel!'',''生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元'',''生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元格添加到工作表中生成的单元'')' 
Exec (@Sql)  
set @n=@n+1
End
end
 
 
select count(*) from userinfo;

 

 

 




 
 

  • 大小: 60.5 KB
  • 大小: 150.4 KB
  • 大小: 56.7 KB
分享到:
评论

相关推荐

    ASP.NET使用NPOI导出数据库到Excel文件

    ### ASP.NET 使用 NPOI 导出数据库到 Excel 文件 #### 概述 在实际开发过程中,经常需要将数据从数据库导出至 Excel 文件供用户下载或进一步处理。本篇文章介绍如何利用 ASP.NET 和 NPOI 库实现这一功能。这种方法...

    使用HttpHandler实现文件下载页面

    示例: Hello,HttpHandler(最...示例: 使用HttpHandler实现文件下载页面 -------------------------------------------------------------------------------- 示例: 添加图片访问的HttpHandler,为网站图片提供"水印

    利用HttpHandler和Jquery进行数据库增改删查操作.doc

    利用HttpHandler和Jquery进行数据库增改删查操作

    .net实现excel导入导出实例代码

    - **导出**:从数据库或其他存储中获取数据,创建一个新的Excel工作簿,写入数据,然后将其响应到客户端,让浏览器下载。 5. **优化和注意事项** - **内存管理**:处理大量数据时,注意内存使用。可以分批读写,...

    利用httphandler实现网站伪静态

    在ASP.NET中,我们可以使用HttpHandler来实现这一功能。 **HttpHandler** 是ASP.NET中的一个核心组件,它处理HTTP请求并返回响应。通过自定义HttpHandler,我们可以拦截特定类型的请求,并对其进行定制处理。在实现...

    使用HttpHandler实现图片水印效果

    1. **读取原始图片**: 使用`System.Drawing.Image`类从流或文件中加载图片。 2. **创建水印**: 创建一个新的图像,通常是一个透明度适中的文本或图形,作为水印。 3. **合并图片**: 将水印定位在原始图片上适当的...

    HttpHandler做图片水印

    在提供的文件列表中,`Demo_log.LDF`和`Demo.mdf`可能是SQL Server数据库的日志文件和主数据文件,它们可能与图片存储有关,但不是HttpHandler直接处理的部分。而`HttpHandler做图片水印`可能是源代码文件或者示例...

    ASP.net Excel 操作实例

    4. **生成Excel文件**: 在ASP.NET中生成Excel文件,首先需要创建一个HttpHandler或Controller响应,然后使用上面提到的任何一种方法来创建Excel工作簿,设置样式,填充数据。最后,将工作簿写入到HttpResponse的...

    用JQuery,ajax从数据库读取数据.docx

    6. **Ajax数据获取**: `url: "ValidateData.ashx"`指向的`ValidateData.ashx`是一个处理程序(可能是ASP.NET的HttpHandler),负责从数据库获取数据并返回。在实际应用中,这里通常会包含SQL查询或者ORM框架(如...

    .net SQL防注入,使用 HttpHandler

    .NET SQL防注入与HttpHandler的使用是Web应用程序开发中的重要环节,主要目的是为了保护数据库系统免受恶意SQL命令的攻击。SQL注入是一种常见的网络安全威胁,攻击者通过输入恶意的SQL语句来操纵或破坏数据库。而...

    GridView导出Excel实例

    通过这个实例,开发者可以学习到如何在ASP.NET 2.0和C#环境下,利用GridView和HttpHandler实现数据导出到Excel的基本方法。然而,实际项目中可能需要根据具体需求进行调整和优化。提供的...

    asp.net 构架之httphandler

    利用HttpHandler创建自定义后缀Rss源 通过IhttpHandler实现图片验证码 使用HttpHandler实现图片防盗链

    Asp.net实现简单的图书管理功能,简单用了HttpHandler详细页重定向,数据库存储图像,以及图像在GridView中显示。

    Asp.net实现简单的图书管理功能,简单用了HttpHandler详细页重定向,数据库存储图像,以及图像在GridView中显示。具体信息在博客中:https://blog.csdn.net/qq841905960/article/details/80620592

    自定义Http处理及应用之HttpHandler篇

    HttpHandler 实现了类似于 ISAPI Server Extension 的功能,而 HttpModule 实现了类似于 ISAPI Filter 的功能。 HttpHandler 的概念和基本使用方法: HttpHandler 是一个接口,用于处理 Http 请求和响应。它提供了...

    ASP.NET中把Gridview导出为EXCEL

    在ASP.NET开发中,将Gridview控件中的数据导出到Excel是一种常见的需求,这有助于用户方便地管理和处理大量数据。下面将详细讲解如何实现这一功能,并解决中文乱码问题。 首先,我们需要理解ASP.NET Gridview的基本...

    使用Gridview绑定数据库中的图片

    为了在Gridview中显示数据库中的图片,需要创建一个自定义的HttpHandler,该Handler负责从数据库中读取图片数据并返回给客户端。 1. **创建HttpHandler**: 创建一个名为`ImageHandler.ashx`的文件,并实现`...

    通用 万能 HttpHandler webRequest 文件上传

    这个"通用 万能 HttpHandler"的概念是指一个设计得非常灵活和可复用的HttpHandler实现,能够处理多种不同的请求场景。在这个特定的情况下,我们关注的是文件上传功能,特别是通过HttpWebRequest来实现。 文件上传是...

    jQuery+HttpHandler实现图片裁剪[整理].pdf

    jQuery+HttpHandler实现图片裁剪[整理].pdf

    httpHandler实现.Net无后缀名Web访问

    ### httpHandler实现.NET无后缀名Web访问 #### 一、引言 在现代Web开发中,为了提高用户体验,很多网站都采用了无后缀名的URL格式,即URL不包含如`.aspx`、`.php`等文件扩展名。这种做法不仅让URL看起来更简洁美观...

    ASP.Net实现SQL动态绑定Echarts图表Demo完整源码

    在这个Demo中,开发者使用SQL语句从数据库中检索数据,这些数据将被用于Echarts图表的生成。 4. **JSON**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...

Global site tag (gtag.js) - Google Analytics