`
reilost
  • 浏览: 16881 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jxl 生成excel下拉框

    博客分类:
  • Java
阅读更多
头段时间要做个excel导出。。其中一列要求做下拉列表的样子。
目前2003和2007的下拉表其实只是到32766个,范围再高也没有用了。
方法需要sheet,要做下拉的单元格,以及打算放置数据的单元格,还有数据了。
返回的是截止点的下个单元格的位置,可以为下个单元格放置数据。

另外,这真是个蛋疼的东西。。jxl不支持2007。。poi支持而且做这个也简单,但是这个项目一直是jxl。。哎。。。

	/**
	 * @param sheet 
	 * @param target 要设置数据验证性的单元格位置
	 * @param current 要存放验证性数据的单元格位置
	 * @param step 
	 * @param data
	 * @return
	 */
	private static int[] buildDataValidationCell(WritableSheet sheet, int[] target, int[] current,
			 List<String> data) {
		try {
			if (data.size() == 0)
				return current;
			List<String> strings = new ArrayList<String>();
			for (String d : data) {
				if (d!= null&& !"".equals(d.trim()))
					strings.add(d);
			}
			if(strings.size()>65535)
				throw new RuntimeException("excel2003单列上限,数据验证只能使用单列或单行");
			//excel2003上限是65535,所以隐藏的行数超过5w就换另外一列,
			//列上限是255。暂时不考虑行列都到上限的情况
			if (current[1] > 50000 ||(current[1] > 50000 && strings.size()>15535)) {
				current[0] = current[0] + 1;
				current[1] = 0;
			}
			//构建下拉数据范围
			buildDataValidationRange(sheet, target, current, strings);
			//设置隐藏
			CellView cv = new CellView();
			cv.setHidden(true);
			sheet.setColumnView(current[0], cv);
			//填充数据
			for (String s : strings) {
				Label b = new Label(current[0], current[1], s);
				sheet.addCell(b);
				current[1] += 1;
			}
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}
		return current;

	}
	//构建下拉数据范围
	private static void buildDataValidationRange(WritableSheet sheet,
			int[] target, int[] current, List<String> strings)
			throws WriteException, RowsExceededException {
		WritableCellFeatures wcf = null;
		Label targetCell = new Label(target[0], target[1], strings.get(0));//数据验证初始cell
		wcf = new WritableCellFeatures();
		StringBuffer buff = new StringBuffer();//数据验证范围
		CellReferenceHelper.getCellReference(current[0] , true,current[1], true, buff);//起点
		buff.append(":");
		CellReferenceHelper.getCellReference(current[0] , true,current[1] + strings.size() - 1, true, buff);//终点
		wcf.setDataValidationRange(buff.toString());//设置数据验证性
		targetCell.setCellFeatures(wcf);
		sheet.addCell(targetCell);
	}
分享到:
评论
2 楼 18335864773 2017-06-28  
用pageoffice 导出excel吧。pageoffice 对 office 的版本的兼容性比jxl或者poi的都好。支持各个版本的office。可以到http://www.zhuozhengsoft.com/Samples3/ExcelCellClick/SubmitExcel.aspx看看效果,
想具体了解学习的话,到
http://www.zhuozhengsoft.com/dowm/
下载示例。研究一下代码。
1 楼 waykim 2015-03-09  
写的什么鬼看不懂

相关推荐

    java利用jxl生成excel文件

    Java使用JXL库生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出时。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下将详细讲解如何使用JXL库来生成Excel文件。 首先,我们需要在...

    jxl模版生成excel

    "jxl模版生成excel" 指的是使用JExcelAPI(简称jxl)这个Java库来创建基于模板的Excel文件。JExcelAPI是一个开源项目,允许程序开发者读写Microsoft Excel文件,它支持从Java数据结构直接导出到Excel格式,同时也可...

    jxl生成excel的通用方法

    使用jxl生成excel的通用方法,参数List&lt;?&gt;数据,LinkedHashMap,String&gt;实体类属性名和中文列名的键值对

    jxl创建下拉列表

    下面是一个更复杂的示例代码,展示了如何使用jxl创建带有不同数据样式的Excel文件,包括下拉框: ```java import java.io.FileOutputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; ...

    java操作jxl生成excel的简化jar包

    自己封装的方法,调用 XlHelper.getXl(List&lt;?&gt; voList , Object head , OutputStream ops)方法,直接返回需要的excel,而不需要再去写jxl的方法。第一个参数voList 是excel里的内容,第二个参数head是excel表头。第...

    jxl方式生成excel表格.zip

    本资源提供了一个利用jxl库实现Java程序中生成Excel表格的解决方案。jxl是一个广泛使用的开源Java库,它允许开发者读取、写入和修改Microsoft Excel文件。 首先,我们来详细了解一下jxl库。jxl库支持多种Excel操作...

    poi jxl 生成EXCEL 报表

    在Java编程环境中,生成Excel报表是一项常见的任务,尤其在数据处理和数据分析中。Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件...

    用jxl生成EXCEL表格

    用jxl生成EXCEL表格,一个非常简单易懂的写法。

    利用Jxl生成excel文件

    这篇博客“利用Jxl生成excel文件”提供了关于如何使用Jxl库创建Excel文档的指导。 首先,Jxl库允许开发者在Java程序中直接操作Excel格式的数据,而无需依赖Microsoft Office套件。它支持多种Excel功能,如单元格...

    jxl 生成excel 简易教程

    jxl是对excel强有力的操纵工具,它具有丰富的API可以满足对excel的各种开发需要。

    使用jxl操作Excel中的下拉列表

    jxl对下拉列表的读写操作以及相应的修改功能

    使用JXL生成Excel实例详解

    这篇博客“使用JXL生成Excel实例详解”将深入探讨如何利用JXL库来创建Excel文件。 首先,要开始使用JXL,你需要在项目中添加JXL的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    [转]java struts2+jxl生成并导出Excel

    总的来说,结合Struts2和JXL,开发者可以方便地在Java web应用中实现Excel文件的生成与导出功能,提供给用户高效的数据导出体验。通过深入理解和实践,可以进一步定制化Excel的样式和内容,满足各种业务需求。

    java使用jxl打印excel报表文件

    在Java开发中,生成和处理Excel文件是一...总的来说,通过JXL库,Java开发者可以方便地生成和打印Excel报表,满足各种数据展示和导出的需求。尽管JXL有一些限制,但其简单易用的API使得它成为小型项目的一个不错选择。

    jxl 自动生成excel

    例子如下: Object是一个对象实体类,如Studnet.java. List 是一个对象集合,后面的是输出路径. WriteExcel rw=new WriteExcel(); rw.writeExcel(new Object(), List, "f:/a.xls","库存表");

    jxl导出excel 完整例子工程

    jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程

    JXL生成excel报表

    在IT行业中,生成Excel报表是常见的数据展示和分析任务,而JXL库为Java开发者提供了一个强大且便捷的解决方案。JXL,全称Java Excel API,是一个开源的Java库,专为读取、写入以及修改Excel文件设计。它允许程序员在...

    jxl导出excel加水印.zip

    `jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...

    java通过jxl生成excel文档

    Java通过JXL库生成Excel文档是一项常见的任务,尤其在数据导出、报表生成等领域非常实用。JXL是一个Java API,允许我们读写Microsoft Excel文件,而无需依赖Microsoft Office。在这个过程中,我们可以创建新的工作簿...

    jxl对excel添加水印(含有setWaterMarkImage方法).zip

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域。`jxl`库是一个广泛使用的开源库,它允许开发者用Java读取、写入和修改Excel文件。在这个特定的场景中,我们将探讨如何...

Global site tag (gtag.js) - Google Analytics