最近帥帥的小毛驢遇到一個很奇葩的需求:
導出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%的購物資金!