用NPOI操作EXCEL-锁定列CreateFreezePane()
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()的更多相关文章
- 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容
2.6.2 用NPOI操作EXCEL--设置密码 有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...
- NPOI操作Excel辅助类
/// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- 用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 ...
- C# 如何使用NPOI操作Excel以及读取合并单元格等
C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...
- .NET 通过 NPOI 操作 Excel
目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...
- 使用NPOI操作Excel文件及其日期处理
工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...
- NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析
哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...
随机推荐
- day6 面向对象(3)
继承 1.1 类和类之间的常见关系. 1:既然继承是描述类和类之间的关系,就需要先来了解类和类之间的常见关系 1.1.1 现实生活的整体与部分 举例说明 1:现实生活 1:学生 是人 2: ...
- centos6.5 下安装 sqlplus
1.下载下面的 rpm 文件 oracle-instantclient12.-basic--.x86_64.rpm oracle-instantclient12.-devel--.x86_64.rpm ...
- UVa 1663 Purifying Machine (二分匹配)
题意:每一个01串中最多含有一个‘*’,‘*’既可表示0也可表示1,给出一些等长的这样的01串,问最少能用多少个这样的串表示出这些串. 如:000.010.0*1表示000.010.001.011,最 ...
- 洛谷 - P1063 - 能量项链 - 区间dp
https://www.luogu.org/problemnew/show/P1063 这个并不是每次只能从两边扩展的,可以从中间断开. #include<bits/stdc++.h> u ...
- 51nod1109(bfs)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109 题意:中文题诶- 思路:可以用二叉树构建,根节点为 1, ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...
- Spring IOC 的源码分析
刚学习Spring的时候,印象最深的就是 DispatcherServlet,所谓的中央调度器,我也尝试从这个万能胶这里找到入口 configureAndRefreshWebApplicationCo ...
- JSON 返回值JSONPath Syntax
{"sys":"ROC","code":0,"messages":"获取列表成功!","d ...
- PHP全国省市区地址分割提取脚本程序
github地址: https://github.com/zmxfree/addressapart 比如将 浙江省杭州市江干区XX路X号 分割成 浙江省 杭州市 江干区 XX路X号,方便excel操作 ...
- mysql8.0数据库忘记密码时进行修改方法
最近安装mysql8.0数据库,用以前的修改mysql方法,没有成功,所以参考网上前辈的做法,自己重新整理了下忘记密码时进行修改方法 1.安装mysql8.0后发现,在安装目中,是没有my.ini 和 ...