POI 2003/2007 下拉列表

该博客详细介绍了如何使用Java的Apache POI库来创建Excel2003和Excel2007的下拉列表。通过示例代码展示了如何设置数据验证,实现单元格的级联选择,以及如何隐藏数据集。
摘要由CSDN通过智能技术生成
               

http://fruitking.iteye.com/blog/811931

Excel2007和Excel2003的部分功能菜单有所调整
比如2003的“插入-名称”,在2007中更为到“公式-定义的名称”
比如2003的“插入-名称-指定-首行”,在2007中更为到“公式-定义的名称-根据所选内容创建-首行”

Excel功能点应用:
相对位置和绝对位置,特别在某个行列的数据是参考另外某个行列的数据而变动的,相对位置的表示方法:A8、B9等等,绝对位置的表示方法:$A$8、$B$9(就是使用美元符号$)

隐藏页的数据引用。
2003中,假设sheet1是隐藏页,并先定义好数据(公式-定义的名称→定义;在sheet1中定义数据源名称:省份;引用位置:=Sheet1!$A$1:$A$5),然后在“添加”数据,设置数据的有效性选项(数据-数据有效性-序列;来源填写“=省份”)
2007中,假设sheet1是隐藏页,并先定义好数据(插入→名称→定义;在sheet1中定义数据源名称:省份;引用位置:=Sheet1!$A$1:$A$5),然后在“添加”数据,设置数据的有效性选项(数据-数据有效性-序列;来源填写“=省份”)





Java代码 复制代码  收藏代码
  1. package com.fruitking.caipiao;   
  2.   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5.   
  6. import org.apache.poi.hssf.usermodel.DVConstraint;   
  7. import org.apache.poi.hssf.usermodel.HSSFCell;   
  8. import org.apache.poi.hssf.usermodel.HSSFDataValidation;   
  9. import org.apache.poi.hssf.usermodel.HSSFRow;   
  10. import org.apache.poi.hssf.usermodel.HSSFSheet;   
  11. import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
  12. import org.apache.poi.ss.usermodel.DataValidation;   
  13. import org.apache.poi.ss.usermodel.Name;   
  14. import org.apache.poi.ss.util.CellRangeAddressList;   
  15.   
  16. public class TestExcelSelect {   
  17.   
  18.        
  19.      public static void main(String [] args) throws IOException {     
  20.          HSSFWorkbook workbook = new HSSFWorkbook();//excel文件对象    
  21.          HSSFSheet userinfosheet1 = workbook.createSheet("用户信息表-1");//工作表对象  
  22.          HSSFSheet userinfosheet2 = workbook.createSheet("用户信息表-2");//工作表对象  
  23.          //创建一个隐藏页和隐藏数据集   
  24.          TestExcelSelect.creatHideSheet(workbook, "hideselectinfosheet");   
  25.          //设置名称数据集   
  26.          TestExcelSelect.creatExcelNameList(workbook);   
  27.          //创建一行数据   
  28.          TestExcelSelect.creatAppRow(userinfosheet1, "许果",1);   
  29.          TestExcelSelect.creatAppRow(userinfosheet1, "刘德华",2);   
  30.          TestExcelSelect.creatAppRow(userinfosheet1, "刘若英",3);   
  31.          TestExcelSelect.creatAppRow(userinfosheet2, "张学友",1);   
  32.          TestExcelSelect.creatAppRow(userinfosheet2, "林志玲",2);   
  33.          TestExcelSelect.creatAppRow(userinfosheet2, "林熙蕾",3);   
  34.             
  35.          //生成输入文件   
  36.          FileOutputStream out=new FileOutputStream("success.xls");     
  37.          workbook.write(out);     
  38.          out.close();   
  39.      }   
  40.         
  41.      /**  
  42.       * 名称管理  
  43.       * @param workbook  
  44.       */  
  45.      public static void creatExcelNameList(HSSFWorkbook workbook){   
  46.         //名称管理   
  47.          Name name;   
  48.          name = workbook.createName();   
  49.          name.setNameName("provinceInfo");   
  50.          name.setRefersToFormula("hideselectinfosheet!$A$1:$E$1");   
  51.          name = workbook.createName();   
  52.          name.setNameName("浙江");   
  53.          name.setRefersToFormula("hideselectinfosheet!$B$2:$K$2");   
  54.          name = workbook.createName();   
  55.          name.setNameName("山东");   
  56.          name.setRefersToFormula("hideselectinfosheet!$B$3:$I$3");   
  57.          name = workbook.createName();   
  58.          name.setNameName("江西");   
  59.          name.setRefersToFormula("hideselectinfosheet!$B$4:$E$4");   
  60.          name = workbook.createName();   
  61.          name.setNameName("江苏");   
  62.          name.setRefersToFormula("hideselectinfosheet!$B$5:$I$5");   
  63.          name = workbook.createName();   
  64.          name.setNameName("四川");   
  65.          name.setRefersToFormula("hideselectinfosheet!$B$6:$K$6");   
  66.      }   
  67.         
  68.         
  69.      /**  
  70.       * 创建隐藏页和数据域  
  71.       * @param workbook  
  72.       * @param hideSheetName  
  73.       */  
  74.      public static void creatHideSheet(HSSFWorkbook workbook,String hideSheetName){   
  75.          HSSFSheet hideselectinfosheet = workbook.createSheet(hideSheetName);//隐藏一些信息  
  76.          //设置下拉列表的内容     
  77.          String[] provinceList = { "浙江","山东","江西","江苏","四川"};   
  78.          String[] zjProvinceList = { "浙江","杭州","宁波","温州","台州","绍兴","金华","湖州","丽水","衢州","舟山"};   
  79.          String[] sdProvinceList = { "山东","济南","青岛","烟台","东营","菏泽","淄博","济宁","威海"};   
  80.          String[] jxProvinceList = { "江西","南昌","新余","鹰潭","抚州"};   
  81.          String[] jsProvinceList = { "江苏","南京","苏州","无锡","常州","南通","泰州","连云港","徐州"};   
  82.          String[] scProvinceList = { "四川","成都","绵阳","自贡","泸州","宜宾","攀枝花","
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值