NPOI导出

//导出全部
            expertPara = GetExpetPara();
            expertPara.BeginIndex = pager.CurrentPageIndex;
            expertPara.EndIndex = int.MaxValue;

            DataSet ds = ExpertBLL.GetPriMngExpertDate(expertPara);
            DataTable dt = ds.Tables[0];
            //判断加载哪个模板
            string tempath = "~/Templates/专家录入管理表.xls";
            //1、获取数据。
            using (FileStream file = new FileStream(HttpContext.Current.Server.MapPath(tempath), FileMode.Open, FileAccess.Read))
            {
                string ReportFileName = Server.MapPath("out.xls");
                HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
                HSSFSheet sheet1 = hssfworkbook.GetSheetAt(0) as HSSFSheet;
                sheet1.ForceFormulaRecalculation = true;
                sheet1.IsPrintGridlines = true;
                sheet1.DisplayGridlines = true;

                HSSFCellStyle _style = sheet1.Workbook.CreateCellStyle() as HSSFCellStyle;
                _style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                _style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                int rowIndex = 0;

                {
                    rowIndex = 2;
                    int i = 1;
                    foreach (DataRow row in ds.Tables[0].Select())
                    {

                        int cellIndex = 0;
                        HSSFRow fr = GetRow(sheet1, rowIndex++);

                        GetCell(fr, cellIndex++, _style).SetCellValue(i.ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_Name"].ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(DelHTML(row["C_Sex"].ToString()));
                        GetCell(fr, cellIndex++, _style).SetCellValue(DelHTML(row["C_WorkUnit"].ToString()));
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_expert_type"].ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_position"].ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_title"].ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_Tel"].ToString());

                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_BusinessOutlets"].ToString());
                        GetCell(fr, cellIndex++, _style).SetCellValue(row["C_BankAccount"].ToString());

                        i++;
                    }

                    sheet1.ForceFormulaRecalculation = true;

                    using (FileStream filess = File.OpenWrite(ReportFileName))
                    {
                        hssfworkbook.Write(filess);
                    }
                    System.IO.FileInfo filet = new System.IO.FileInfo(ReportFileName);
                    Response.Clear();
                    Response.Charset = "GB2312";
                    Response.ContentEncoding = System.Text.Encoding.UTF8;
                    // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
                    string name = DateTime.Now + ".xls";
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
                    // 添加头信息,指定文件大小,让浏览器能够显示下载进度
                    Response.AddHeader("Content-Length", filet.Length.ToString());

                    // 指定返回的是一个不能被客户端读取的流,必须被下载
                    Response.ContentType = "application/ms-excel";

                    // 把文件流发送到客户端
                    Response.WriteFile(filet.FullName);
                    // 停止页面的执行   

                    Response.End();
                }
            }

原文地址:https://www.cnblogs.com/cjm123/p/8564170.html

时间: 03-13

NPOI导出的相关文章

NPOI导出excel(带图片)

近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新工具包. 2.选择.net版本(例如dotnet4),引用其中的dll. 3.后台代码 using System; using System.Web; using System.Data; using System.Configuration; using System.IO; using Test

NPOI导出EXCEL 打印设置分页及打印标题

在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而这个属性默认是true的,怪不得一直设置都不起作用. 设置打印标题用 hssfworkbook.SetRepeatingRowsAndColumns(0, 0, 5, 0, 5); 但最新版本已经有新的方法了. Sheet sheet1 = hssfworkbook.CreateSheet("She

Npoi导出Word

Npoi导出Word 参考网上大神们笔记,完成Word导出. //创建文档 XWPFDocument doc = new XWPFDocument(); //标题 XWPFParagraph p1 = doc.CreateParagraph(); XWPFRun r1 = p1.CreateRun(); r1.SetBold(true); r1.FontSize = 23; r1.SetText("先进个人基本信息"); r1.SetTextPosition(30); CT_P doc

NPOI导出多张图片到Excel

常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有8个参数. HSSFClientAnchor anchor = new HSSFClientAnchor(dx1, dy1, dx2, dy2, col1, row1, col2, row2); 前面四个表示在单元格中两个点的位置,后面四个表示是哪个单元格.先看代码. public FileResu

Npoi导出Excel 实战篇(Webform)

废话不多说,直接上遇到的问题 需求:在这个界面点击导出,导出页面数据,苦于没有做过webfrom项目,弄了半天还是没想到原生态的好方法,所以在网上看了下有没有导出的好例子,结果发现有人推荐使用Npoi,抱着强烈的好奇心,就去查了下这个东东,发现果然强大,哈哈,里面集成了很多东西,下面直接进入解决问题正题: 实现过程(仅供参考) ①发现项目里面接口方法返回DataTable是带参数的,所以新增了一个无参数的方法 ②实现这个方法,重点是将查询到的结果集放大DataTable中 ③先去官网:http:

NPOI导出功能

利用NPOI组件将数据中想要的数据导出到excel表格中. demo如下 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using NPOI.HSSF.UserModel; 6 using NPOI.SS.UserModel; 7 using System.IO; 8 9 namespace ConsoleApplication1 10 { 11 cl

NPOI 导出excel数据超65535自动分表

工作上遇到的问题,网上找了一些资料 整理了一个比较可行的解决方案. NPOI 大数据量分多个sheet导出 代码段 /// <summary> /// DataTable转换成Excel文档流,并输出到客户端 /// </summary> /// <param name="table"></param> /// <param name="response"></param> /// <pa

NPOI导出EXCEL数据量大,分多个sheet显示数据

//NPOIHelper 类关键代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using System.Collections; using System.Web; namespace Yikeba_htmlConverter { publi

NPOI导出为Excel文件

1.添加引用 2.将ExcelRender.cs和SqlHelper.cs两个类拷贝到App_Code文件夹下 3.写后台代码 eg:根据部门和日期导出成绩表 1 /// <summary> 2 /// 点击导出Excel 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 p

NPOI导出EXCEL后公式无结果,公式重新计算开关

但其实这个选项是可以控制的.在NPOI中,这个属性叫做XSSFSheet.ForceFormulaRecalculation. 打开该选项的话,代码为 sheet1.ForceFormulaRecalculation = true; (这是默认值,通常不需要设置) 如果关闭的话,代码为 sheet1.ForceFormulaRecalculation = false;