public void ExportPermissionRoleData(string search, int roleStatus)
{
var workbook = new HSSFWorkbook();
string random = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next();
string fileName = HttpUtility.UrlEncode("sheet" + random + ".xls", System.Text.Encoding.UTF8); #region 表头
ISheet worksheet = workbook.CreateSheet("sheet");
IRow headerRow = worksheet.CreateRow();
ICell cell = headerRow.CreateCell();
cell.SetCellValue("test1");
ICell cellType = headerRow.CreateCell();
cellType.SetCellValue("test2");
ICell cellOper = headerRow.CreateCell();
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(, * );
worksheet.SetColumnWidth(, * );
worksheet.SetColumnWidth(, *);
//冻结前3列
worksheet.CreateFreezePane(, , , );
//动态加载所有的角色名称,创建时间倒序排列
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 != -)
{
bool status = roleStatus ==? 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 = ;
for (int head = ; 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 = ;
var configService = DependencyResolver.Current.GetService<IConfigAppService>();
var configs = configService.GetOnlyPermissionConfig().ToAllPermissionList();
int bodyCount = configs.Count;
for (int body = ; body < bodyCount; body++)
{
try
{
IRow dataRow = worksheet.CreateRow(rowIndex + );
dataRow.CreateCell().SetCellValue(configs[body].Moudle);
dataRow.CreateCell().SetCellValue(configs[body].Type);
dataRow.CreateCell().SetCellValue(configs[body].Name); //根据角色表权限Code找对应的权限Code
//匹配相应的【权限行】 对应的 【角色列】
for (int head = ; 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 = ;
Response.Charset = "UTF-8";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.ContentType = "application/ms-excel";
ms.WriteTo(Response.OutputStream);
}
}

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

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

  1. 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容

    2.6.2 用NPOI操作EXCEL--设置密码       有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...

  2. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  3. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

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

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  5. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...

  6. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

  7. .NET 通过 NPOI 操作 Excel

    目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...

  8. 使用NPOI操作Excel文件及其日期处理

    工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...

  9. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

随机推荐

  1. hdu4366 Successor (dfs序+zkw线段树)

    Successor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  2. app.config 配置的一种用法

    app.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  3. 组合外键(FOREIGN KEY)

    一张表,它的外键即是参考另一张表的主键,但这些关联键是组合键,由2列或多列组成. 你可以先看看这篇<多列组合为主键(PRIMARY KEY)>https://www.cnblogs.com ...

  4. JavaScript 原型的实际应用之实现一个 jQuery

    我们平时使用jQuery大概是这样: let $p = $('p'); $p.css('fontSize', '40px'); 我们生成jQuery实例对象后,就可以使用原型上的css(), html ...

  5. 深入剖析ASP.NET Core2.1部署模型,你会大吃一惊

    ----------------------------   以下内容针对 ASP.NET Core2.1版本,2.2推出windows IIS进程内寄宿 暂不展开讨论---------------- ...

  6. Scipy实现图片去噪

    先贴要处理的图片如下 由图片显示可知: # 图片中存在噪声点,白色的圆环# 圆环上的数据和圆环里面和外面不同,所以可以显示出肉眼可识别的图片# 波动# 存在噪声的地方,波动比较大 # 傅里叶变换可以将 ...

  7. 移动端专用css

    通过设置css属性 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);取消掉手机端webkit浏览器 点击按钮或超链接之类的 默认灰色背景色 设置css属性 ...

  8. 洛谷P2875 [USACO07FEB]牛的词汇The Cow Lexicon

    P2875 [USACO07FEB]牛的词汇The Cow Lexicon 题目描述 Few know that the cows have their own dictionary with W ( ...

  9. link-1-STL 标准模板库

    STL(Standard Template Library,标准模版库)是C++语⾔言标准中的重要组成部分.STL以模板类和模版函数的形式为程序员提供了了各种数据结构和算法的实现,程序员吐过能够充分的 ...

  10. PAT甲级——1106 Lowest Price in Supply Chain(BFS)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90444872 1106 Lowest Price in Supp ...