当前位置:首页 > 科技

【poi怎么设置excel】POI Java excel生成下拉列表

最近工作中出现了使用POI生成excel模板的需求,数据库签出了所有类型的excel生成下拉列表,供用户选择。

使用的POI版本为3.14

两种方案中的第一个缺点是列表数据量不能超过128。

方案1

public static hssf workbook write(inputstream inputstream)throws io exception、classnotfoundexception {

//第一个工作手册

hssf workbook workbook=new hssf workbook(input stream);

//创建图纸

Hssf工作表=workbook . get sheet at(0);

//准备下拉数据

String[] strs=new String[] { '刘德华','张学友','黎明','郭福清' };

//设置第一列中1-10行为的下拉列表

cellrangeaddresslistregions=new cellrangeaddresslist(0,9,0,0);

//创建下拉数据

dv constraint constraint=dv con(strs);

//绑定

hssfdatavalidation datavalidation=new hssfdatavalidation(regions,constraint);

(数据验证);

《返回工作手册》;

}

方案2

方案2的想法是在excel中添加隐藏的工作表存储数据源(下拉数据),并将属性写入实际上需要下拉列表的工作表单元格。

1.需要使用的util类

package com . excel . select;

import Java . io . input stream;

Importorg.a

Import org.aStyle

Importorg.a

Importorg.a

Importorg.a

Importorg.a

Importorg.a

Importorg.a

Import org.aStyle

Importorg.a

Importorg.a

Importorg.a

Importorg.a

Importorg.a

/* *

Ca类实施说明

*

* @author

*/

Public class CatalogExcelUtil {

/* *

*创建工作簿

*

* @param in

* @return

* @throws Exception

*/

public static workbook create workbook(inputstream in)throws exception {

Try {

Return new HSSFWorkbook(in):

} finally {

If (in)!=空){

in . close();

}

}

}

/* *

*获取单个单元格字符串值

*

* @param cell

* @return

*/

public static string getcellstringvalue(单元格单元格){

If (cell==null) {

Return

}

cell . setcelltype);

富文本字符串str=cell . getrichstringcellvalue();

return();

}

/* *

*初始化Excel储存格、设定储存格值和型式

*

* @param cell

* @param style

* @param value

*/

public static void init cell(cell cell、cellstyle style、string value) {

Cell.setcellstyle(样式);

Cell.setcellvalue(值);

}

/* *

*初始化Excel储存格、设定储存格值、型式和注解

*

* @param cell

* @param styl

e * @param value * @param comment */ public static void initCell(Cell cell, CellStyle style, String value, Comment comment) { cell.setCellStyle(style); cell.setCellValue(value); cell.setCellComment(comment); } /** * 获取Excel单元格备注 * * @param drawing * @param anchor * @param content * @return */ public static Comment getCellComment(Drawing drawing, HSSFClientAnchor anchor, String content) { Comment comment = drawing.createCellComment(anchor); comment.setString(new HSSFRichTextString(content)); return comment; } /** * 获取Excel标题单元格样式 * * @param wb * @return */ public static CellStyle getHeadStyle(Workbook wb) { CellStyle style = wb.createCellStyle(); ); ); ); ); ); ); Font font = wb.createFont(); ); // 粗体 (font); (true); return style; } /** * 获取Excel数据单元格样式 * * @param wb * @return */ public static CellStyle getBodyStyle(Workbook wb) { CellStyle style = wb.createCellStyle(); ); ); ); ); return style; } /** * 获取Excel错误单元格样式 * * @param wb * @return */ public static CellStyle getErrorStyle(Workbook wb) { CellStyle style = wb.createCellStyle(); Font font = wb.createFont(); ); (font); return style; } }

2.Test类

package com.excel.select; import java.io.FileOutputStream; import org.a; import org.a; import org.a; import org.a; import org.a; import org.a; import org.a; import org.a; import org.a; import org.aStyle; import org.a; import org.a; import org.a; public class Test3 { public static void main(String[] args) throws Exception { Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("导入模板"); // 第一行 Row row = (0); CellStyle style = Ca(wb); Ca(0), style, "第1列列头"); Ca(1), style, "第2列列头"); Ca(2), style, "部门"); Ca(3), style, "层级"); Ca(4), style, "第5列列头"); Ca(5), style, "第6列列头"); // 设置部门 String[] departSelectList = new String[] { "刘德华", "张学友", "黎明", "郭富城", "金城武", "梁朝伟" }; // 第3列的第1行到第21行单元格部门下拉 ,可替换为从数据库的部门表数据, // hidden_depart 为隐藏的sheet的别名,1为这个sheet的索引 ,考虑到有多个列绑定下拉列表 wb = dropDownList2003(wb, sheet, departSelectList, 1, 20, 2, 2, "hidden_depart", 1); // 设置层级 String[] levelSelectList = new String[] { "科比", "詹姆斯", "库里", "麦迪", "艾弗森" }; for (int i = 0; i < levelSelec; i++) { } wb = dropDownList2003(wb, sheet, levelSelectList, 1, 20, 3, 3, "hidden_level", 2); FileOutputStream stream = new FileOutputStream("d:\\;); wb.write(stream); (); } /** * @param wb HSSFWorkbook对象 * @param realSheet 需要操作的sheet对象 * @param datas 下拉的列表数据 * @param startRow 开始行 * @param endRow 结束行 * @param startCol 开始列 * @param endCol 结束列 * @param hiddenSheetName 隐藏的sheet名 * @param hiddenSheetIndex 隐藏的sheet索引 * @return * @throws Exception */ public static HSSFWorkbook dropDownList2003(Workbook wb, Sheet realSheet, String[] datas, int startRow, int endRow, int startCol, int endCol, String hiddenSheetName, int hiddenSheetIndex) throws Exception { HSSFWorkbook workbook = (HSSFWorkbook) wb; // 创建一个数据源sheet HSSFSheet hidden = workbook.createSheet(hiddenSheetName); // 数据源sheet页不显示 workbook.setSheetHidden(hiddenSheetIndex, true); // 将下拉列表的数据放在数据源sheet上 HSSFRow row = null; HSSFCell cell = null; for (int i = 0, length = da; i < length; i++) { row = (i); cell = row.createCell(0); cell.setCellValue(datas[i]); } //2016-12-15更新,遇到问题:生成的excel下拉框还是可以手动编辑,不满足 //HSSFName namedCell = workbook.createName(); (hiddenSheetName); // A1 到 Ada 表示第一列的第一行到da行,需要与前一步生成的隐藏的数据源sheet数据位置对应 (hiddenSheetName + "!$A$1:$A" + da); // 指定下拉数据时,给定目标数据范围 hiddenSheetName!$A$1:$A5 隐藏sheet的A1到A5格的数据 DVConstraint constraint = DVCon(hiddenSheetName + "!$A$1:$A" + da); CellRangeAddressList addressList = null; HSSFDataValidation validation = null; row = null; cell = null; // 单元格样式 CellStyle style = workbook.createCellStyle(); ("0")); ); ); // 循环指定单元格下拉数据 for (int i = startRow; i <= endRow; i++) { row = (HSSFRow) realS(i); cell = row.createCell(startCol); cell.setCellStyle(style); addressList = new CellRangeAddressList(i, i, startCol, endCol); validation = new HSSFDataValidation(addressList, constraint); realS(validation); } return workbook; } }

1.《【poi怎么设置excel】POI Java excel生成下拉列表》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【poi怎么设置excel】POI Java excel生成下拉列表》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2542824.html

上一篇

【EXcel怎么链接CAD】如何映射CAD和从CAD导入Excel?

【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集

  • 【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集
  • 【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集
  • 【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集
【poi怎么设置excel】还在使用原生poi处理excel吗?太麻烦了,看看这个。

【poi怎么设置excel】还在使用原生poi处理excel吗?太麻烦了,看看这个。

poi怎么设置excel相关介绍,1、easypoi 前言Excel在日常工作中经常用于存储用例信息,是一个非常方便的数据存储工具,具有很多优点。对此我不详细说明。 如今,Java运营excel,Java被誉为世界上最好的语言(无可辩...

【poi怎么设置excel】使用POI和反射导入Excel自动识别图元类

【poi怎么设置excel】使用POI和反射导入Excel自动识别图元类

poi怎么设置excel相关介绍,前言: 第一次启动excel导入时,每当需要导入新的Excel文件时,都必须重新创建相应的工具以导入Excel。所以我很苦恼,认为有必要使用万能引进的Excel工具。(威廉莎士比亚,Excel工具,N...

【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)

  • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
  • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
  • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
【poi怎么设置excel】使用POI将查询到的数据表数据逐个表地导出到Excel中

【poi怎么设置excel】使用POI将查询到的数据表数据逐个表地导出到Excel中

poi怎么设置excel相关介绍,网站防火墙 网站防火墙 您的请求带有不合法参数,已被网站管理员设置拦截! 可能原因:您提交的内容包含危险的攻击请求 如何解决: 1)检查提交内容; 2)如网站托管,请联系空间提供商; 3)普通网站访客...

【poi怎么设置excel】POI导出Excel

  • 【poi怎么设置excel】POI导出Excel
  • 【poi怎么设置excel】POI导出Excel
  • 【poi怎么设置excel】POI导出Excel
【poi怎么设置excel】Java使用poi导入导出Excel

【poi怎么设置excel】Java使用poi导入导出Excel

poi怎么设置excel相关介绍,前言 1、将用户信息导出到excel表(导出数据……。)。 2、将Excel表中的信息输入网站数据库(上传练习)。……。)。 设计为excel的开发过程,例如Excel导出、Excel导入数据库! E...

【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

poi怎么设置excel相关介绍,阿帕奇poi POI是[Poor Obfuscation Implementation]的首字母缩写,意思是[可怜的模糊实现]。Java进程读取和写入Microsoft Office格式文件的能力。 ...