poi导出excel用隐藏sheet方式封装下拉框(下拉选项值多的情况)

2003方式
public static void dropDownList2003(String dataSource, String filePath)
      throws Exception {
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet realSheet = workbook.createSheet("下拉列表测试");
    HSSFSheet hidden = workbook.createSheet("hidden");
    //数据源sheet页不显示    workbook.setSheetHidden(1, true);
    String[] datas = dataSource.split("\\,");
    CellStyle style = workbook.createCellStyle();
    style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
    HSSFRow row = null;
    HSSFCell cell = null;
    for (int i = 0, length = datas.length; i < length; i++) {
      row = hidden.createRow(i);
      cell = row.createCell(0);
      cell.setCellValue(Integer.valueOf(datas[i]));
    }
    Name namedCell = workbook.createName();
    namedCell.setNameName("hidden");
    namedCell.setRefersToFormula("hidden!$A$1:$A$" + datas.length);
    DVConstraint constraint = DVConstraint
        .createFormulaListConstraint("hidden");
    CellRangeAddressList addressList = null;
    HSSFDataValidation validation = null;
    row = null;
    cell = null;
    for (int i = 0; i < 100; i++) {
      row = realSheet.createRow(i);
      cell = row.createCell(0);
      cell.setCellStyle(style);
      addressList = new CellRangeAddressList(i, i, 0, 0);
      validation = new HSSFDataValidation(addressList, constraint);
      realSheet.addValidationData(validation);
      validation.setShowErrorBox(false);// 取消弹出错误框    }
    FileOutputStream stream = new FileOutputStream(filePath);
    workbook.write(stream);
    stream.close();
    style = null;
    addressList = null;
    validation = null;
  }


2007方式
 
 
public static void dropDownList2007(String dataSource, String filePath)
      throws Exception {
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("下拉列表测试");
    XSSFSheet hidden = workbook.createSheet("hidden");
    //数据源sheet页不显示    workbook.setSheetHidden(1, true);
    String[] datas = dataSource.split("\\,");
    CellStyle style = workbook.createCellStyle();
    style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
    XSSFRow row = null;
    XSSFCell cell = null;
    for (int i = 0, length = datas.length; i < length; i++) {
      row = hidden.createRow(i);
      cell = row.createCell(0);
      cell.setCellValue(Integer.valueOf(datas[i]));
    }
    Name namedCell = workbook.createName();
    namedCell.setNameName("hidden");
    namedCell.setRefersToFormula("hidden!$A1:$A" + datas.length);
    XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
    XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
        .createFormulaListConstraint("hidden");
    CellRangeAddressList addressList = null;
    XSSFDataValidation validation = null;
    for (int i = 0; i < 100; i++) {
      row = sheet.createRow(i);
      cell = row.createCell(0);
      cell.setCellStyle(style);
      addressList = new CellRangeAddressList(i, i, 0, 0);
      validation = (XSSFDataValidation) dvHelper.createValidation(
          dvConstraint, addressList);
      sheet.addValidationData(validation);
    }
    FileOutputStream stream = new FileOutputStream(filePath);
    workbook.write(stream);
    stream.close();
    addressList = null;
    validation = null;
  }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: POI是Apache下的一个开源项目,可以用来操作Excel文件。通过POI,可以很方便地在Excel中创建多个sheet页。可以使用Workbook.createSheet()方法创建新的sheet页,并可以使用Sheet.setSheetName()方法设置sheet页的名称。 ### 回答2: 随着poi的不断完善和发展,现在已经能够方便地实现导出excel文件的多个sheet页功能。 首先,我们需要导入poi的jar包,然后创建一个工作簿对象,即Workbook对象,这个对象负责创建我们要输出的Excel文件和其中的sheet页。 接着,我们可以创建多个sheet页,每个sheet页都是一个Sheet对象,我们可以使用Workbook的createSheet方法来创建一个sheet页,可以通过一个字符串来命名这个sheet页。 对于每个sheet页,我们可以使用同样的流程来设定表头、添加数据等操作。在所有数据都被填入sheet页之后,我们需要关闭输出流并保存文件,即调用workbook对象的write方法将数据写入文件中。 当然,要注意一些细节问题。比如,我们可以使用Workbook的setSheetName方法来给每个sheet页重命名,同时需要注意一些特殊字符的转义问题,如果表头和数据中包含了这些特殊字符,需要进行转义才能正常显示。 以上就是poi导出excel多个sheet页的基本流程,需要注意的事项比较多,但使用起来还是比较方便的,特别适合一些需要导出大量数据的业务场景。 ### 回答3: poi是一种非常实用的Java API,可以帮助我们快速开发Excel导出功能。对于需要导出多个sheet页的需求,我们可以利用poi的工具类来实现。 首先,我们需要创建一个Workbook对象,表示整个Excel文件。然后,创建多个Sheet对象,表示每个sheet页。可以使用Workbook.createSheet()方法创建多个Sheet对象,并指定sheet页的名称。 接下来,我们需要创建行和单元格,向每个sheet页中写入数据。可以使用Sheet.createRow()方法创建行对象,然后使用Row.createCell()方法创建单元格对象,并设定单元格的值。 在写入数据之前,我们需要设置每个sheet页的列宽和样式。可以使用Sheet.setDefaultColumnWidth()方法设置列宽,使用CellStyle对象设置单元格的样式。 最后,我们需要将Workbook对象写入到文件中。可以使用FileOutputStream对象和Workbook.write()方法将Workbook对象写入到文件中。 总的来说,实现poi导出Excel多个sheet页需要以下步骤: 1.创建Workbook对象表示整个Excel文件; 2.创建多个Sheet对象表示每个sheet页; 3.设置每个sheet页的列宽和样式; 4.创建行和单元格,向每个sheet页中写入数据; 5.将Workbook对象写入到文件中。 使用poi导出Excel多个sheet页可以帮助我们提高开发效率,并满足不同的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值