用NPOI导出Excel,生成下拉列表、以及下拉联动列表(第1篇/共3篇)
最近帅帅的小毛驴遇到一个很奇葩的需求:
导出Excel报表,而且还要带下拉框,更奇葩的是,下拉框还是联动的。
小毛驴一天比较忙,所以这等小事自然由我来为她分忧了。经历了两天,做了几种解决方案,最后完美把这个问题解决了。
小毛驴本应该会比较开心的,结果刚好解决那天我把她惹生气了(表情:尬笑),老婆大人对不起,请原谅我吧~ (2017.11.24)
好了,言归正传,接下来说一下这几个解决方案,各有各的优缺点。
首先声明,本系列的文章比较长,一共分三篇,本文是第一篇;
请各位看官耐心看,我会向大家详细分享 “渔” 技术,谢谢~
解决方案一:
用 NPOI 的 DVConstraint.CreateExplicitListConstraint 方法:
老规矩,上马!哦不,上码:
1
///
<summary>
2
///
生成excel下拉列表demo
3
///
</summary>
4
public
void
CreateCellDropDownList()
5
{
6 HSSFWorkbook workbook =
new HSSFWorkbook();
//
从流内容创建Workbook对象
7 ISheet sheet = workbook.CreateSheet(
"
sheetOne
");
//
创建工作表
8
9
//
设置生成下拉框的行和列
10 CellRangeAddressList cellRegions =
new CellRangeAddressList(
0,
65535,
0,
1
);
11
12
//
设置 下拉框内容
13 DVConstraint constraint =
DVConstraint.CreateExplicitListConstraint(
14
new
string[] {
"
选项一
",
"
选项二
",
"
选项三
"
});
15
16
//
绑定下拉框和作用区域,并设置错误提示信息
17 HSSFDataValidation dataValidate =
new
HSSFDataValidation(cellRegions, constraint);
18 dataValidate.CreateErrorBox(
"
输入不合法
",
"
请输入下拉列表中的值!
"
);
19 dataValidate.ShowPromptBox =
true
;
20
21
sheet.AddValidationData(dataValidate);
22
23
//
导出到文件
24
string filePath = Server.MapPath(
"
~/ExportFiles/CellDropDownList.xls
"
);
25 FileStream fs =
new
FileStream(filePath, FileMode.Create);
26
workbook.Write(fs);
27
fs.Close();
28 }
这种方案的优缺点:
优点:设置下拉选项比较容易,思维没有很复杂;
缺点:当下拉选项的长度超过255个字符后,就会报错,从而生成不了。
本文相关内容导航:
1.NPOI生成不受下拉选项长度255字符限制的导出方式,以及N级下拉联动;
2.在Excel中制作下拉列表,以及下拉联动列表的方法和原理。