手工设置:
excel菜单栏上--数据--有效性--允许--序列,
excel菜单栏上--数据--有效性--输入信息.
程序现实:
首先,http://poi.apache.org/官方下载POI3.2 jar包.
注:经本人测试转载的文章中有一些错误:
1. 使用POI3.2.jar创建的提示框不支持中文,最终我换成了POI3.5.jar就能支持中文了.
2. DVConstraint constraint = DVConstraint.createCustomFormulaConstraint("B1");这样写有点问题,提示字段中可输入的值只能输入B1的内容.
这一句的意思是设置约束条件引用B1单元格中的内容,查找API后发现必须要有一个约束才行,我的灵活处理的方法是设置为BB1,一般不会有这么多字段,BB1没有约束就相当于创建了一个没有约束的单元格.
本为是对上一篇博客的中内容的封装,封装后的方法使用起来更方便一些.
效果图:
import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.DVConstraint; import org.apache.poi.hssf.usermodel.HSSFDataValidation; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.CellRangeAddressList; public class PoiTest2 { public static void main(String[] args) throws IOException { HSSFWorkbook wb = new HSSFWorkbook();// excel文件对象 HSSFSheet sheetlist = wb.createSheet("sheetlist");// 工作表对象 FileOutputStream out = new FileOutputStream("d:\\success.xls"); String[] textlist = { "列表1", "列表2", "列表3", "列表4", "列表5" }; sheetlist = setHSSFValidation(sheetlist, textlist, 0, 500, 0, 0);// 第一列的前501行都设置为选择列表形式. // sheetlist = setHSSFPrompt(sheetlist, "promt Title", "prompt Content", // 0, 500, 1, 1);// 第二列的前501行都设置提示. wb.write(out); out.close(); } /** * 设置某些列的值只能输入预制的数据,显示下拉框. * * @param sheet * 要设置的sheet. * @param textlist * 下拉框显示的内容 * @param firstRow * 开始行 * @param endRow * 结束行 * @param firstCol * 开始列 * @param endCol * 结束列 * @return 设置好的sheet. */ public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol) { // 加载下拉列表内容 DVConstraint constraint = DVConstraint .createExplicitListConstraint(textlist); // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列 CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); // 数据有效性对象 HSSFDataValidation data_validation_list = new HSSFDataValidation( regions, constraint); sheet.addValidationData(data_validation_list); return sheet; } /** * 设置单元格上提示 * * @param sheet * 要设置的sheet. * @param promptTitle * 标题 * @param promptContent * 内容 * @param firstRow * 开始行 * @param endRow * 结束行 * @param firstCol * 开始列 * @param endCol * 结束列 * @return 设置好的sheet. */ public static HSSFSheet setHSSFPrompt(HSSFSheet sheet, String promptTitle, String promptContent, int firstRow, int endRow, int firstCol, int endCol) { // 构造constraint对象 DVConstraint constraint = DVConstraint .createCustomFormulaConstraint("BB1"); // 四个参数分别是:起始行、终止行、起始列、终止列 CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); // 数据有效性对象 HSSFDataValidation data_validation_view = new HSSFDataValidation( regions, constraint); data_validation_view.createPromptBox(promptTitle, promptContent); sheet.addValidationData(data_validation_view); return sheet; } }
相关推荐
java excel poi合并单元格
poi获取合并单元格,Java 对excel 文档处理。
java POI导出Excel文件多表头文件
POI中设置Excel单元格格式
POI excel单元格顔色设定
比较全面的POI操作手册,并附上完整的例子。
Java POI下载Excel模板 Excel带有下拉框的模板,并有详细注释,生成exlcel的下拉框,必填项标红,数字栏位防止科学计数法,并设置Excel标题样式
POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
poi获取exccel有合并单元格的数据,存入List
java使用poi在excel单元格添加超链接,设置字体颜色(csdn)————程序
poi读取合并单元格帮助类
POI 合并单元格 及 注意事项
poi导出下拉列表,数据有效性约束
poi导入/导出Excel表格,合并单元格的读取和设置
利用poi进行excel相同内容合并单元格,只摘要了传入部分功能,请关注addMergedRegion方法
POI设置EXCEL单元格格式为文本.pdf
使用poi导出报表后,希望某一列为下拉列表,可以更方便操作某一列为下拉框
POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格
poi生成excel及合并单元格示例,详见文章http://blog.csdn.net/geloin/article/details/17219885
ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容