2.6.8 用NPOI操作EXCEL--產生下拉式清單

來源:互聯網
上載者:User
      上一節我們講了簡單的資料有效性驗證,這一節我們學習一下資料有效性的另一個應用--下拉式清單。在Excel中,並沒有類似Web中的下拉控制項,其下拉效果是通過資料有效性來實現的。設定步驟為:
(1)選定一個要產生下拉式清單的地區;
(2)設定資料有效性為序列,並在來源中填充可選下拉的值,用“,”隔開()。

對應的效果為:

同樣,利用NPOI代碼也可以實現上面的效果:HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");

CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);
DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] { "itemA", "itemB", "itemC" });
HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);

下面對代碼作一下簡要說明:
先設定一個需要提供下拉的地區,關於CellRangeAddressList建構函式參數的說明請參見上一節:CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);

然後將下拉項作為一個數組傳給CreateExplicitListConstraint作為參數建立一個約束,根據要控制的地區和約束建立資料有效性就可以了。

      但是這樣會有一個問題:Excel中允許輸入的序列來源長度最大為255個字元,也就是說當下拉項的總字串長度超過255是將會出錯。那麼如果下拉項很多的情況下應該怎麼處理呢?答案是通過引用的方式。步驟如下:
先建立一個Sheet專門用於儲存下拉項的值,並將各下拉項的值寫入其中:HSSFSheet sheet2 = hssfworkbook.CreateSheet("ShtDictionary");
sheet2.CreateRow(0).CreateCell(0).SetCellValue("itemA");
sheet2.CreateRow(1).CreateCell(0).SetCellValue("itemB");
sheet2.CreateRow(2).CreateCell(0).SetCellValue("itemC");

然後定義一個名稱,指向剛才建立的下拉項的地區:HSSFName range = hssfworkbook.CreateName();
range.Reference = "ShtDictionary!$A1:$A3";
range.NameName = "dicRange";

最後,設定資料約束時指向這個名稱而不是字元數組:HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);

DVConstraint constraint = DVConstraint.CreateFormulaListConstraint("dicRange");
HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);

執行這段代碼,產生的Excel效果如下:

在名稱管理器中會發現有一個名為"dicRange"的名稱,指向"ShtDictionary!$A1:$A3"的下拉項地區:

在資料有效性中會發現來源變成了"=dicRange",指向上面定義的名稱。而不是以前的"itemA,itemB,itemC":

 

返回目錄

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.