用NPOI操作EXCEL-锁定列CreateFreezePane()

 public void ExportPermissionRoleData(string search, int roleStatus)
        {
            var workbook = new HSSFWorkbook();
            string random = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100);
            string fileName = HttpUtility.UrlEncode("sheet" + random + ".xls", System.Text.Encoding.UTF8);

            #region 表头
            ISheet worksheet = workbook.CreateSheet("sheet");
            IRow headerRow = worksheet.CreateRow(0);
            ICell cell = headerRow.CreateCell(0);
            cell.SetCellValue("test1");
            ICell cellType = headerRow.CreateCell(1);
            cellType.SetCellValue("test2");
            ICell cellOper = headerRow.CreateCell(2);
            cellOper.SetCellValue("test3");
            //设置颜色
            ICellStyle style = workbook.CreateCellStyle();
            style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Yellow.Index;
            style.FillPattern = FillPattern.SolidForeground;
            cell.CellStyle = style;
            cellType.CellStyle = style;
            cellOper.CellStyle = style;
            //设置宽度
            worksheet.SetColumnWidth(0, 13 * 256);
            worksheet.SetColumnWidth(1, 20 * 256);
            worksheet.SetColumnWidth(2, 30*256);
            //冻结前3列
            worksheet.CreateFreezePane(3, 0, 3, 0);
            //动态加载所有的角色名称,创建时间倒序排列
            var predicate = PredicateBuilder.True<Role>();
            if (!string.IsNullOrWhiteSpace(search))
            {
                predicate = predicate.And(r => r.Name.ToLower().Contains(search) || (r.Description != null && r.Description.ToLower().Contains(search)));
            }
            if (roleStatus != -1)
            {
                bool status = roleStatus ==1? true : false;
                predicate = predicate.And(c => c.Status == status);
            }
            var roleList = RoleService.Find(predicate).OrderByDescending(t => t.CreateDateTime).ToList();
            var roleCount = roleList.Count();
            int headIndex = 3;
            for (int head = 0; head < roleCount; head++)
            {
                //headerRow.CreateCell(headIndex + head).SetCellValue(roleList[head].Name);
                ICell cellRole = headerRow.CreateCell(headIndex + head);
                cellRole.SetCellValue(roleList[head].Name);
                //设置颜色
                ICellStyle styleRole = workbook.CreateCellStyle();
                styleRole.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.LightGreen.Index;
                styleRole.FillPattern = FillPattern.SolidForeground;
                cellRole.CellStyle = styleRole;
            }
            #endregion

            #region 填充表头数据
            int rowIndex = 0;
            var configService = DependencyResolver.Current.GetService<IConfigAppService>();
            var configs = configService.GetOnlyPermissionConfig().ToAllPermissionList();
            int bodyCount = configs.Count;
            for (int body = 0; body < bodyCount; body++)
            {
                try
                {
                    IRow dataRow = worksheet.CreateRow(rowIndex + 1);
                    dataRow.CreateCell(0).SetCellValue(configs[body].Moudle);
                    dataRow.CreateCell(1).SetCellValue(configs[body].Type);
                    dataRow.CreateCell(2).SetCellValue(configs[body].Name);

                    //根据角色表权限Code找对应的权限Code
                    //匹配相应的【权限行】 对应的 【角色列】
                    for (int head = 0; head < roleCount; head++)
                    {
                        var RoleCodes = roleList[head].PermissionCodes.Split(‘,‘);
                        foreach (var roleCode in RoleCodes)
                        {
                            if (roleCode == configs[body].Code)
                            {
                                dataRow.CreateCell(headIndex + head).SetCellValue("√");
                            }
                        }
                    }
                    rowIndex++;
                }
                catch (Exception ex)
                {
                    throw new OnlyException("导出出错!详细信息:"+ex.Message);
                }
            }
            #endregion

            using (MemoryStream ms = new MemoryStream())
            {
                workbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                Response.Charset = "UTF-8";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
                Response.ContentType = "application/ms-excel";
                ms.WriteTo(Response.OutputStream);
            }
        }

用NPOI操作EXCEL-锁定列CreateFreezePane()

时间: 2024-10-06 15:11:58

用NPOI操作EXCEL-锁定列CreateFreezePane()的相关文章

NPOI操作EXCEL--设置密码及设置只读

有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完成,如下图:      那么,在NPOI中有没有办法通过编码的方式达到这一效果呢?答案是肯定的. HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); HSSFRow row1 = sheet1.CreateRow(0);HSSFCell cel1 = row1.CreateCell(0);HS

NPOI操作Excel 003:写入空Excel

对于NPOI操作Excel前面已经有了简单认识(http://blog.csdn.net/yysyangyangyangshan/article/details/42614209).继续来看如何将内容保存至Excel中.根据前面的经验NPOI操作Excel主要的几个对象分别是:workbook,sheet以及sheet内的row和cell.所以保存至Excel也是对这几个对象进行操作.当然我们平时使用Excel时不光要在单元格中保存内容,还要设置单元格的格式以及字体大小等,也就是格式和样式.这些

Npoi操作excel

转载地址:http://www.cnblogs.com/knowledgesea/archive/2012/11/16/2772547.html Npoi操作excel Npoi 简介 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.co

C#开发中使用Npoi操作excel实例代码

C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.com

通过NPOI操作Excel

最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region excel文件属性 //作者 public string Author { get; set; } //标题 public string Title { get; set; } //主题 public string Subject { get; set; } //标记 public string Keyw

NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

> 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们解析数据入库的功能实现. 那么,这就涉及到一个问题:我们可以读出excel的表头,但是怎么知道每个表头具体对应数据库里面的字段呢? 博主经过一段时间的思考与构思,想到一法:现在的情况是我们有excel表A,对应数据库表B,但是A与B具体属性字段的映射关系我们不知.那我们是不是可以有一个A到B的映射文件C呢? 我想,说到这,大家就很明了了... 第一步:为每张excel创建一个与

NPOI操作EXCEL(一)——npoi基础

去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据,我想着也就几百个员工.企业的信息,自己找两个姑娘手动录入呗(为啥是姑娘?让一个大老爷们去录假数据,你去吗?反正我不去)...结果,一个同事吭哧吭哧跑来找我: “手动录入太慢了,填一堆基本信息,还要传头像,传身份证,传营业执照什么的” 嗯哼!想让我写代码给你们录?没门! 于是忽悠道“唉,找领导多要几

使用NPOI操作Excel(03、07)

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using NPOI.SS.UserModel; 6 using NPOI.XSSF.UserModel; 7 using NPOI.HSSF.UserModel; 8 using System.IO; 9 using System.Data; 10 using NPOI.SS.Util; 11 12 na

[Solution] NPOI操作Excel

NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. NPOI官方网站:http://npoi.codeplex.com/ 下载:Install-Package NPOI 本节内容,介绍NPOI的类