0 0

谁使用过POI3.8 设置EXCEL2007的数据有效性5

谁使用过POI3.8 设置EXCEL2007的数据有效性

问题补充:
hudingchen 写道
有问题吗? 我写个例子,poi3.8,excel2007好用
	public static void main(String[] args) {
		FileOutputStream out = null;
		try {
			// excel对象
			HSSFWorkbook wb = new HSSFWorkbook();
			// sheet对象
			HSSFSheet sheet = wb.createSheet("sheet1");
			// 输出excel对象
			out = new FileOutputStream("C://aaa.xls");
			// 取得规则
			HSSFDataValidation validate = PoiTest.setValidate((short) 1,
					(short) 1, (short) 1, (short) 1);
			// 设定规则
			sheet.addValidationData(validate);
			// 输出excel
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	public static HSSFDataValidation setValidate(short beginRow,
			short beginCol, short endRow, short endCol) {
		// 创建一个规则:1-100的数字
		DVConstraint constraint = DVConstraint.createNumericConstraint(
				DVConstraint.ValidationType.INTEGER,
				DVConstraint.OperatorType.BETWEEN, "1", "100");
		// 设定在哪个单元格生效
		CellRangeAddressList regions = new CellRangeAddressList(beginRow,
				beginCol, endRow, endCol);
		// 创建规则对象
		HSSFDataValidation ret = new HSSFDataValidation(regions, constraint);
		return ret;
	}


你这个生成的EXCEL格式是2003的,我在生成EXCEL2007的时候,在实例化XSSFDataValidation 时候,不知道怎么写了,你以前弄好2007格式的吗,能给我一个例子吗,谢谢
2011年5月14日 14:22

2个答案 按时间排序 按投票排序

0 0

我之前的代码,在2007下是好用的,不过没有使用XSSF,我试着用XSSF写了一下,但是生成的excel文件的数据有效性没有加上,不过代码我觉得没有问题的,先看下

	public static void main(String[] args) {
		FileOutputStream out = null;
		try {
			// excel对象
			XSSFWorkbook wb = new XSSFWorkbook();
			// sheet对象
			XSSFSheet sheet = wb.createSheet("sheet1");
			// 输出excel对象
			out = new FileOutputStream("C://aaa1.xls");
			// 取得规则
			DataValidation validate = PoiTest.setValidate(sheet, (short) 1,
					(short) 1, (short) 1, (short) 1);
			// 设定规则
			sheet.addValidationData(validate);
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	public static DataValidation setValidate(XSSFSheet sheet, short beginRow,
			short beginCol, short endRow, short endCol) {
		XSSFDataValidationHelper helper = new XSSFDataValidationHelper(sheet);
		DataValidationConstraint constraint = helper.createNumericConstraint(
				ValidationType.INTEGER, OperatorType.BETWEEN, "1", "100");
		CellRangeAddressList regions = new CellRangeAddressList(beginRow,
				beginCol, endRow, endCol);
		return helper.createValidation(constraint, regions);
	}


后来我查了下文档,http://poi.apache.org/spreadsheet/quick-guide.html#Validation

其中有这么一句Currently - as of version 3.5 - the XSSF stream does not support data validations and neither it nor the HSSF stream allow data validations to be recovered from sheets
也就是说3.5中XSSF是不支持validations的,我怀疑3.8也还不支持,估计以后会修正吧,希望对你有帮助。

2011年5月16日 21:57
0 0

有问题吗? 我写个例子,poi3.8,excel2007好用

	public static void main(String[] args) {
		FileOutputStream out = null;
		try {
			// excel对象
			HSSFWorkbook wb = new HSSFWorkbook();
			// sheet对象
			HSSFSheet sheet = wb.createSheet("sheet1");
			// 输出excel对象
			out = new FileOutputStream("C://aaa.xls");
			// 取得规则
			HSSFDataValidation validate = PoiTest.setValidate((short) 1,
					(short) 1, (short) 1, (short) 1);
			// 设定规则
			sheet.addValidationData(validate);
			// 输出excel
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	public static HSSFDataValidation setValidate(short beginRow,
			short beginCol, short endRow, short endCol) {
		// 创建一个规则:1-100的数字
		DVConstraint constraint = DVConstraint.createNumericConstraint(
				DVConstraint.ValidationType.INTEGER,
				DVConstraint.OperatorType.BETWEEN, "1", "100");
		// 设定在哪个单元格生效
		CellRangeAddressList regions = new CellRangeAddressList(beginRow,
				beginCol, endRow, endCol);
		// 创建规则对象
		HSSFDataValidation ret = new HSSFDataValidation(regions, constraint);
		return ret;
	}

2011年5月14日 16:09

相关推荐

    Excel操作工具poi3.8

    在给定的标题“Excel操作工具poi3.8”中,我们关注的是POI 3.8版本,这是一个适用于处理Excel文件的强大工具。在这个版本中,用户可以进行数据读取、写入、格式化以及复杂的公式计算等操作。 首先,我们需要理解...

    POI 3.8 Beta5 创建大数据量 Excel文件

    在POI 3.8 Beta5这个版本中,开发者可以利用它来处理大数据量的Excel文件,这在数据处理、报告生成或数据分析场景中非常有用。 Apache POI库提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet ...

    poi-3.8.zip

    在"poi-3.8.zip"这个压缩包中,我们主要关注的是它对Excel的支持,特别是如何利用POI库来实现Excel数据的有效性和自定义下拉列表功能。 在Java开发中,Apache POI提供了一套API,使得程序员可以在不依赖Microsoft ...

    POI实现的基于动态模板的EXCEL数据导出

    标题中的“POI实现的基于动态模板的EXCEL数据导出”是指利用Apache POI库来创建一个可以动态填充数据的Excel模板,从而实现大量数据的高效导出。Apache POI是一个开源项目,它允许Java开发者读写Microsoft Office...

    POI3.8以及3.9的API

    标题中的"POI3.8以及3.9的API"指的是这两个版本的API接口文档,是开发者理解和使用POI库的关键资源。API文档详尽地列出了各种类、方法和接口,使得开发者能够有效地利用POI进行文件操作。 在POI 3.8和3.9中,主要...

    poi3.8,3.9,3.10jar包

    标题提到的"poi3.8,3.9,3.10jar包"分别代表了三个不同版本的Apache POI库,每个版本都有其特定的改进和新特性。 在Excel处理方面,Apache POI相比于早期的jxl库,提供了更多的功能和更好的性能。以下是Apache POI在...

    poi3.8 jar包

    在本案例中,"poi3.8 jar包"指的是Apache POI库的3.8版本,这是一个Java库,允许开发人员在Java应用程序中读取、写入和修改Microsoft Office格式的文件。该版本发布于2012年,是POI项目的一个稳定版本,包含了处理...

    POI3.8架构总结.docx

    Apache POI 是一个著名的开放源码函式库,主要用于处理...特别是在大数据量处理方面,SXSSFWorkbook的引入极大地提升了性能和可扩展性,使得POI成为处理Excel文件的理想选择,尤其适用于需要处理大量数据的业务场景。

    poi-3.8-20120326.jar 和 poi-excelant-3.8-20120326.jar

    1. **Excel文件处理**:Apache POI 提供了HSSF(Horrible Spreadsheet Format)API来处理旧版的Excel 97-2003格式(.xls),以及XSSF(XML Spreadsheet Format)API来处理Excel 2007及以后版本的.xlsx格式。...

    POI3.8中 大数据量的处理.pdf

    总之,Apache POI 3.8 中的SXSSFWorkbook是处理大数据量Excel文件的理想选择,它通过流式处理和磁盘缓存策略,有效地解决了内存限制问题,确保了大规模数据处理的可行性。在互联网和计算机科学(cs)领域,这样的...

    poi-3.17-3.8-3.9-3.10.zip

    在给定的压缩包"poi-3.17-3.8-3.9-3.10.zip"中,包含了Apache POI的多个版本,从3.17到3.8,这些版本可用于Java Web项目中的数据导入和导出功能。 **Apache POI主要知识点:** 1. **Excel处理**: - **HSSF**:...

    poi-3.17-3.8.zip

    总之,Apache POI是Java开发中处理Office文档的强大工具,无论是在3.17还是3.8版本,都能帮助开发者轻松地完成Excel数据的导入导出任务。根据项目的具体需求和资源限制,选择合适版本的Apache POI库是至关重要的。

    C3P0 fastjson log4j POI3.7+3.8 jar包资源

    4. **Apache POI**:Apache POI是一个用于读写Microsoft Office格式文件的Java库,`POI3.7+3.8.jar`可能包含了3.7和3.8两个版本的合并,支持对Excel、Word、PowerPoint等多种文件的操作。在处理大量数据时,例如读取...

    POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析

    "POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event API来...

    解析excel使用的poi包

    标题“解析excel使用的poi包”和描述“解析excel所需要的poi包”都指向了使用Apache POI进行Excel文件操作的主题。 Apache POI包含多个模块,每个模块对应不同的Office文档类型。在提供的压缩包子文件中,我们看到...

    poi-examples-3.8-beta5-sources.jar.zip

    在 poi-examples-3.8-beta5-sources.jar 中,你可以找到许多例子,这些例子涵盖了如何使用POI进行Excel操作的基本用法,包括但不限于以下几点: 1. **创建工作簿**:POI提供了Workbook接口,用于创建一个新的Excel...

    POI3.8组件研究(四)--Event API (HSSF Only)事件的解析

    在本文中,我们将深入探讨Apache POI 3.8版本中的Event API,特别是针对HSSF(Horizontally Sparse File Format)的事件解析。Apache POI是一个流行的Java库,它允许开发人员处理Microsoft Office格式的文件,如...

    poi java生成excel的利器

    例如,如果你需要将数据库中的数据导出为Excel,可以利用POI的批处理特性,一次性写入多个单元格,从而提高性能。同时,它也支持读取Excel文件,进行数据分析或者数据导入到应用程序。 对于开发过程中可能遇到的...

    Java使用POI导出大数据量Excel的方法

    SXSSFWorkbook是在Apache POI 3.8版本及以上开始支持的,它是XSSFWorkbook的一个子类,用于处理Excel 2007以上的.xlsx格式。与XSSFWorkbook不同,SXSSFWorkbook通过在硬盘上创建临时文件来缓解内存压力。当数据行数...

Global site tag (gtag.js) - Google Analytics