导出大量数据,解决npoi导出内存溢出

本文介绍了一种使用OLEDB进行大数据量Excel导出的方法,通过分页处理和压缩技术,实现了高效的数据导出和文件下载。文章详细展示了如何创建表格、插入数据以及如何将多个文件压缩并提供下载。
/// <summary>
        /// 使用OLEDB导出Excel
        /// </summary>
        /// <param name="dt">数据集</param>
        /// <param name="filepath">文件目录和文件名</param>
        /// <param name="tablename">SHEET页名称</param>
        /// <param name="pagecount">每页记录数</param>
        public static void Export(DataTable dt, string filepath, string tablename, int pagecount,string UserID)
        {
   
   
            string docupath = System.Web.HttpContext.Current.Server.MapPath("~\\NPOI\\" + UserID + "\\");
            //建立数据夹
            if (!Directory.Exists(docupath))
            {
   
   
                Directory.CreateDirectory(docupath);
            }
            //else
            //{
   
   
            //    File.Delete(docupath);
            //    Directory.CreateDirectory(docupath);
            //}
            //excel 2003格式
            string name = docupath + filepath;
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + name + ";Extended Properties=Excel 8.0;";
            //Excel 2007格式
            //string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + name + ";Extended Properties=Excel 12.0 Xml;";
            try
            {
   
   
                using (OleDbConnection con = new OleDbConnection(connString))
                {
   
   
                    con.Open();

                    //开始分页
                    if (dt.Rows.Count > pagecount)
                    {
   
   
                        int page = dt.Rows.Count / pagecount + 1; //总页数
                        for (int i = 0; i < page; i++)
                        {
   
   
                            //建新sheet和表头
                            StringBuilder strSQL = new StringBuilder();
                            string tabname = tablename + i.ToString</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值