`

JXL 导出EXCEL

 
阅读更多

需要把320排班表导出到 EXCEL 

 

使用的是 JXL

 

系统中已经有了一个工具类可以把 List 的 数据写入到 INPUTSTREAM中。 

 

定义好表头和对应的字段名称。 

 

ByteArrayOutputStream stream = new ByteArrayOutputStream();
		String[] titleNames = new String[]{"XXX", "XXXX", "XXXXX", "XXXX", "XXXX"};
		String[] fields = new String[]{"flixxxxNo", "flxxxxDate", "pxxxxtName",  "coxxCount", "shxxtCxxnt"};
		List<CrewAssignLogDetail2> details = crewAssignLogService.queryAssignLogDetail2sByAssignLogId(assignLogId);
		
		ExcelWriter.writeExcel(stream, titleNames, fields, details);
		InputStream is = new ByteArrayInputStream(stream.toByteArray());

 

 

但是, 发现这种只支持属性为数据立即可取, 我这边许多的属性是List类型, 不能直接得到。

于是改造,把字段和属性写到MAP中, 

 

 

		ByteArrayOutputStream stream = new ByteArrayOutputStream();
		String[] titleNames = new String[]{"套组编号", "批次", "组基准月", 
				"单位", "姓名", "可排月", "技术标准", "单位", "姓名", "可排月", "技术标准",
				"报到日期", 
				"日期", "内容", 	"日期", "内容",	"日期", "内容",
				"日期", "时间", "场次", "教员", "单位", 
				"日期", "时间", "场次", "教员", "单位",
				"日期", "时间", "场次", "检察员", "单位",
				"执照签注类型"};
		String[] fields = new String[]{"suite_no", "batch_no", "bench_Month",
				"unitName0", "pilotName0", "month0", "technicalStandard0", "unitName1", "pilotName1", "month1", "technicalStandard1",//学员
				"checkin_date", 
				"t_date0", "t_content0", "t_date1", "t_content1",	"t_date2", "t_content2",//理论课
				"s_date0", "s_time0", "s_no0", "teacherName0", "unitName0", //场次
				"s_date1", "s_time1", "s_no1", "teacherName1", "unitName1",
				"s_date2", "s_time2", "s_no2", "teacherName2", "unitName2",
				"sign_property"};
		
		
		List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>();
		for(SuitAdminView suitView : simulatorResList){
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("suite_no", suitView.getSuite_no());map.put("batch_no", suitView.getBatch_no());map.put("bench_Month", suitView.getBench_Month());
			for(int i=0;i<suitView.getStudentList().length;i++){
				map.put("unitName"+i, suitView.getStudentList()[i].getUnitName());
				map.put("pilotName"+i, suitView.getStudentList()[i].getPilotName());
				map.put("month"+i, suitView.getStudentList()[i].getMonth());
				map.put("technicalStandard"+i, suitView.getStudentList()[i].getTechnicalStandard());
			}
			map.put("checkin_date", suitView.getCheckin_date());
			for(int i=0;i<suitView.getTheoryDesViewList().length;i++){
				map.put("t_date"+i, suitView.getTheoryDesViewList()[i].getT_date());
				map.put("t_content"+i, suitView.getTheoryDesViewList()[i].getT_content());
			}
			for(int i=0;i<suitView.getTraining_simDesViewList().length;i++){
				map.put("s_date"+i, suitView.getTraining_simDesViewList()[i].getS_date());
				map.put("s_time"+i, suitView.getTraining_simDesViewList()[i].getS_time());
				map.put("s_no"+i, suitView.getTraining_simDesViewList()[i].getS_no());
				map.put("teacherName"+i, suitView.getTraining_simDesViewList()[i].getTeacherName());
				map.put("unitName"+i, suitView.getTraining_simDesViewList()[i].getUnitName());
			}
			mapList.add(map);
		}
		A320ExcelWriter.writeExcel(stream, titleNames, fields, mapList);
		is = new ByteArrayInputStream(stream.toByteArray());
		fileName = URLEncoder.encode((fixed_year + "A320总排班.xls"),GlobalConfig.getDefaultWebEncoding());
		

 

 

输出之后, 发现文本格式的单元格双击后, 会变成数字格式的。 

 

查到需要用一个格式设置类

 

WritableCellFormat cellFormat = new WritableCellFormat(NumberFormats.TEXT);

new Label(column, row, String.valueOf(object), cellFormat);

 

通过阅读jxl文档,问题已经解决,附代码如下:
WritableCellFormat   contentFromart   =   new   WritableCellFormat(NumberFormats.TEXT);
jxl.write.Label   labelCFC2   =   new   jxl.write.Label(0,15,   "   01234567890123456789   ",   contentFromart);
sheet.addCell(labelCFC2);  
NumberFormats.TEXT是一个强制显示文本的格式,上面的代码将显示的数字为01234567890123456789   ,而非1234567890123456789。

 

 

最近不忙, 改进了一下, 增加了子对象的访问支持, 且集合对象可以通过 XX[0],,,, 来访问集合下标的访问,支持数组和列表。

 

 

于是,上面的代码可以改进, 不用再采取 MAP 的方式再次封装了,直接把对象传递进去, 使用定义的Field名称进行取值。

 

		ByteArrayOutputStream stream = new ByteArrayOutputStream();
		String[] titleNames = new String[]{"套组编号", "批次", "组基准月", 
				"单位", "姓名", "可排月", "技术标准", "单位", "姓名", "可排月", "技术标准",
				"报到日期", 
				"日期", "内容", 	"日期", "内容",	"日期", "内容",
				"日期", "时间", "场次", "教员", "单位", 
				"日期", "时间", "场次", "教员", "单位",
				"日期", "时间", "场次", "检察员", "单位",
				"执照签注类型"};
		String[] fields = new String[]{"suite_no", "batch_no", "bench_Month",
				"studentList[0].unitName", "studentList[0].pilotName", "studentList[0].month", "studentList[0].technicalStandard", 
				"studentList[1].unitName", "studentList[1].pilotName", "studentList[1].month", "studentList[1].technicalStandard",//学员
				"checkin_date", 
				"theoryDesViewList[0].t_date", "theoryDesViewList[0].t_content", 
				"theoryDesViewList[1].t_date", "theoryDesViewList[1].t_content",
				"theoryDesViewList[2].t_date", "theoryDesViewList[2].t_content",//理论课
				"training_simDesViewList[0].s_date", "training_simDesViewList[0].s_time", "training_simDesViewList[0].s_no", "training_simDesViewList[0].teacherName", "training_simDesViewList[0].unitName", //场次
				"training_simDesViewList[1].s_date", "training_simDesViewList[1].s_time", "training_simDesViewList[1].s_no", "training_simDesViewList[1].teacherName", "training_simDesViewList[1].unitName",
				"training_simDesViewList[2].s_date", "training_simDesViewList[2].s_time", "training_simDesViewList[2].s_no", "training_simDesViewList[2].teacherName", "training_simDesViewList[2].unitName",
				"sign_property"};
		
 

 

 

 

如果数据量不是很大, 可以使用

 

 

更加方便维护。

 

但是这种方式如果数据量比较大, 就会出现内存占用过大的问题。

 

 

 

 

 

 

分享到:
评论

相关推荐

    jxl导出excel 完整例子工程

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

    jxl导出excel加水印.zip

    本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `jxl`库提供了一套完整的API来操作Excel文件,包括创建新的工作簿、添加...

    jxl导出excel工具类

    在描述中提到的“jxl导出excel工具类”,通常会包含以下功能: 1. **初始化工作簿**:创建一个新的`Workbook`对象,这是Excel文件的基本单位,可以包含多个工作表。 2. **创建工作表**:在`Workbook`中添加新的`...

    jxl导出excel

    标题中的“jxl导出excel”指的是使用JExcelApi(简称jxl)库来生成和导出Microsoft Excel格式的文件。JExcelApi是一个开源Java库,允许开发者在Java应用程序中读取、写入和修改Excel文件。这个工具类在处理大量数据...

    使用jxl导出Excel表的好例子

    本篇文章将深入探讨如何利用`jxl`库来创建和导出Excel表格。 首先,我们需要在项目中引入`jxl`库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    jxl导出excel总结

    《jxl导出Excel的深度解析与应用》 在信息化高度发展的今天,Excel作为数据处理和分析的重要工具,被广泛应用于各个领域。Java作为一种强大的编程语言,如何与Excel进行交互,成为了许多开发者关注的焦点。jxl库...

    jxl导出Excel基础

    jxl导出Excel基础,非常有用的一个东西,漫漫看

    jxl 导出 excel

    要实现"jxl从数据库中直接导出excel文档",我们遵循以下步骤: 1. **设置环境**:首先,确保你的项目中已经包含了JXL库的jar文件。你可以通过Maven或Gradle等构建工具将其作为依赖添加到项目中。 2. **数据库连接*...

    JXL导出Excel数据表

    首先,我们来理解"JXL导出Excel数据表"这一主题。JXL(Java Excel API)是一个开源项目,它允许Java程序创建、修改和读取Excel文件。通过这个库,我们可以方便地在程序中动态生成Excel工作表,包括设置单元格格式、...

    JXL导出excel的示例及文档

    在本示例中,我们将探讨如何使用JXL导出Excel以及JXL的API文档。 1. **JXL的基本用法** - **创建工作簿(Workbook)**: 使用`Workbook.createWorkbook()`方法创建一个新的Excel工作簿对象。 - **创建工作表...

    jxl导出excel文件简单示例

    标题中的“jxl导出excel文件简单示例”是指使用jxl库来创建和导出Excel文件的一个基本操作。jxl是一个Java库,它允许开发者读取、写入和修改Excel文件,尤其在处理批量数据时非常方便。在这个示例中,我们将探讨如何...

    jxl导出excel.zip

    "jxl导出excel.zip"是一个包含工具类的压缩包,用于帮助开发者便捷地将数据导出为Excel格式,主要利用了JXL库。JXL是Java Excel API的一个简称,它是一个开源的Java库,支持读取、写入以及修改Microsoft Excel文件。...

    利用JXL导出Excel的代码示例

    以下是一个基本的代码示例,展示了如何利用JXL导出Excel的步骤: 1. 创建工作簿对象: ```java WorkbookSettings ws = new WorkbookSettings(); // 如果需要设置编码(例如中文字符),可以这样: ws.set...

    struts2+jxl导出excel

    在"struts2+jxl导出excel"的场景中,我们将讨论如何利用Struts2框架与JXL库配合,实现从web应用中导出数据到Excel的工作。 首先,我们需要理解Struts2的动作(Action)和结果(Result)。动作是处理用户请求的核心...

    jxl导出excel文件的例子,用了java反射

    标题提到的"jxl导出excel文件的例子",意味着我们将探讨如何使用JXL库创建Excel文件。 在Java中,导出Excel文件通常涉及以下步骤: 1. 引入JXL库:首先,你需要在项目中添加JXL的依赖。如果你使用的是Maven,可以...

    jxl导出excel实践

    本文将深入探讨如何使用JXL库在Java中导出Excel文件,基于提供的“jxl导出excel实践”主题。 JXL库(Java Excel API)是专门用于读写Microsoft Excel文件的开源库。它支持多种操作,如创建新的工作簿,读取现有工作...

    自己做的jxl导出excel

    自己做的jxl导出excel。

    java jxl导出excel文件.txt

    根据提供的文件信息,我们可以总结并深入探讨以下几个与...以上是关于如何使用Java JXL库导出Excel文件的详细介绍,涵盖了从环境准备到具体实现步骤的全过程。希望这些知识点能够帮助您更好地理解和应用Java JXL库。

    JXL导出excel Output_Excl

    标题“JXL导出Excel”指的是使用JExcelApi库来创建和操作Microsoft Excel文件的Java编程技术。JExcelApi是一个开源的Java库,允许开发者在Java应用程序中读写Excel文件,而无需安装Microsoft Office。这个库特别适用...

Global site tag (gtag.js) - Google Analytics