欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

NPOI导出

程序员文章站 2022-07-07 12:39:06
//导出全部 expertPara = GetExpetPara(); expertPara.BeginIndex = pager.CurrentPageIndex; expertPara.EndIndex = int.MaxValue; DataSet ds = ExpertBLL.GetPriM... ......
//导出全部
            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();
                }
            }