用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表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...
随机推荐
- VNC协议分析
VNC协议分析 摘自: http://blog.csdn.net/forever_feng/article/details/4703088 简介 VNC(Virtual Network Computi ...
- Thinkphp5+plupload图片上传功能,支持实时预览图片。
今天和大家分享一个国外的图片上传插件,这个插件支持分片上传大文件.其中著名的七牛云平台的jssdk就使用了puupload插件,可见这个插件还是相当牛叉的. 这个插件不仅仅支持图片上传,还支持大多数文 ...
- LeetCode: 389 Find the Difference(easy)
题目: Given two strings s and t which consist of only lowercase letters. String t is generated by rand ...
- 模拟一则ORA-600 [4194][][]故障并处理
环境:OEL 5.7 + Oracle 11.2.0.3 1.模拟ORA-600 [4194][][]故障 2.使用bbed处理 3.尝试启动数据库 1.模拟ORA-600 [4194][][]故障 ...
- Node.js crypto加密模块汇总
第一篇文章:MD5 和 SHA家族 概述:使用Node实现较为简单的Hash加密算法,本篇实际上重不在Hash加密,主要的还是为了引出crypto加密的三种方式 第二篇文章:HMAC 概述:密钥相关的 ...
- 剑指Offer的学习笔记(C#篇)-- 平衡二叉树(二叉树后序遍历递归详解版)
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 一 . 题目分析 首先要理解一个概念:什么是平衡二叉树,如果某二叉树中任意的左右子树深度相差不超过1,那么他就是一颗平衡二叉树.如下图: 所以 ...
- 利用system.reflection遍历一个类的变量成员
假设有下面一个类,在程序中已初始化,如何获取里面的变量成员name,age,onduty及其值呢? public class Employee { public string name; public ...
- MySQL创建用户+授权+备份
======权限管理====== 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作. 那么一般情况在公司 ...
- echart 初级尝试
var option = { title: { text: 'ECharts 入门示例'//标题 }, legend: { data:['销量']//图例 }, xAxis: { data: [&qu ...
- HDU1409 Is It a Number
http://acm.hdu.edu.cn/showproblem.php?pid=1409 没啥好说的,至今也不知道到底错在哪里了,看了discuss才过的 #include <iostrea ...