封装NPOI导出含下拉列表的Excel
/// <summary>
/// 绑定数据的方法
/// </summary>
/// <param name="ssfworkbook">HSSFWorkbook</param>
/// <param name="sheet1">HSSFSheet</param>
/// <param name="cateDt">数据源</param>
/// <param name="sheetName">页名</param>
/// <param name="dispName">显示名称</param>
/// <param name="row">属于第几列</param>
/// <param name="nextCount">相隔下一列的位置(只要有一列为1,后面便都为1,以此类推)</param>
private void GetCategoryData(HSSFWorkbook ssfworkbook, HSSFSheet sheet1, DataTable cateDt, string sheetName, string dispName, int row, int nextCount)
{
try
{
HSSFSheet sheet2 = ssfworkbook.CreateSheet("Sht" + sheetName);
int indexCate = ;
ssfworkbook.SetSheetHidden(row - nextCount, true);//隐藏 foreach (DataRow cateItem in cateDt.Rows)
{
sheet2.CreateRow(indexCate).CreateCell().SetCellValue(cateItem[dispName].ToString());//列数据
indexCate++;
}
HSSFName range = ssfworkbook.CreateName();//创建名称
range.Reference = "Sht" + sheetName + "!$A$1:$A$" + indexCate;//格式
range.NameName = sheetName; //将下拉列表添加
CellRangeAddressList regions = null;
regions = new CellRangeAddressList(, , row - , row - );
DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(sheetName);
HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);
}
catch { }
}
/// <summary>
/// 设置Excel表头(数组Length必须相同)
/// </summary>
/// <param name="strName">Excel中的名称</param>
/// <param name="width">宽</param>
/// <param name="headerRow">HSSFRow</param>
/// <param name="sheet1">HSSFSheet</param>
/// <param name="HSSFWorkbook">ssfworkbook</param>
private string SetUpExcelTitle(HSSFWorkbook ssfworkbook, string[] strName, int[] width, HSSFRow headerRow, HSSFSheet sheet1)
{
try
{
if (strName.Length != width.Length)
{
return "数组长度不同!";
}
HSSFFont fontTitle = ssfworkbook.CreateFont();
fontTitle.FontHeightInPoints = ;
fontTitle.Boldweight = HSSFFont.BOLDWEIGHT_NORMAL;
HSSFCellStyle hssfCellTitle = ssfworkbook.CreateCellStyle();
hssfCellTitle.SetFont(fontTitle); for (int i = ; i < strName.Length; i++)
{
//设置表头
headerRow.CreateCell(i).SetCellValue(strName[i]);
//设置表头的宽度
sheet1.SetColumnWidth(i, width[i]);
headerRow.GetCell(i).CellStyle = hssfCellTitle;
}
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 设置Excel内容
/// </summary>
/// <param name="values">内容</param>
/// <param name="dataRow">HSSFRow</param>
private void SetUpExcelContent(string[] values, HSSFRow dataRow)
{
for (int i = ; i < values.Length; i++)
{
//填充数据
dataRow.CreateCell(i).SetCellValue(values[i]);
}
}
封装NPOI导出含下拉列表的Excel的更多相关文章
- NPOI导出多张图片到Excel
常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有 ...
- C# NPOI导出Excel和EPPlus导出Excel比较
系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...
- C# NPOI导出Excel和EPPlus导出Excel
转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...
- .NET Core使用NPOI导出复杂,美观的Excel详解
前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦.客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- 基于NPOI导出和导入Excel
概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...
- (C#)使用NPOI导出Excel
在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- NPOI导出EXCEL 打印设置分页及打印标题
在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置 sheet1.FitToPage = false; 而 ...
随机推荐
- ViewController添加子控制器 并且弹出
/** * 初始化子控制器 */ - (void)setupChildVcs { for (int i = 0; i<6; i++) { UIViewController *vc = [[UI ...
- 构造方法特点,void
构造方法特点: 1.和类有相同的名字 2.无返回值 3.被默认强制void void作用:====>>说明声明的方法没有返回值 构造方法作用: -->初始化实例属性 -->用于 ...
- bzoj 4358 permu
比较容易想到莫队算法+线段树,但是这样时间复杂度是O(nsqrtnlogn)无法通过,考虑如果不进行删除操作,只有添加操作的话那么并查集就可以实现了,于是可以设定sqrtn块,每个块范围为(i-1)* ...
- JS 实现中英文翻译
缺点就是还是会闪出中文,但是效果还行. var langPackage = { "主题":"Title", "下一页":"Next ...
- 11.Java反射机制 哦对了,前面的序号来自随笔关于编程之路的思索第一篇
基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的. 这种动态获取类的信息以及动态调用对象的方法的功能来自于J ...
- For 循环嵌套 0309
For ...
- win7 IIS发布项目遇到的问题
问题一: HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加 MIME 映射. 1.依次打开控制面板 ...
- 微软Sql server analysis service数据挖掘技术
最新在一个项目中要求用到微软SSAS中的数据挖掘功能,虽然以前做项目的时候也经常用到SSAS中的多维数据集 (就是CUBE),但是始终没有对SSAS中的数据挖掘功能进行过了解.所以借着项目需求这股东风 ...
- Linux Centos 上一些常用的命令
1.查看端口被哪个进程占用 netstat -lnp | grep <端口号> 2.查看某个进程号详细信息 ps <进程号> 3.检查指定服务是否开启(例如 telnet) c ...
- virtualbox -centos ping不通外网
centos上配置网卡自动获取ip 在路由器上配置了ip和mac绑定.ping不通外网.删除路由器上的静态mac绑定后OK,不明