最近帅帅的小毛驴遇到一个很奇葩的需求:
导出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中制作下拉列表,以及下拉联动列表的方法和原理。
帅帅的小毛驴
2017-11-24
下面给大家推荐两个小福利:
- 支付宝领红包,每天都能领取,最高99元。领取的红包在支付时可以抵扣现金!
- 一款覆盖淘宝、天猫全场商品95%的内部优惠券搜索神器。
扫描二维码下载APP后,输入激活码:code888,即可自用省钱 + 分享赚钱!最高帮您节省90%的购物资金!