`
nice2230
  • 浏览: 4864 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

java导出功能

    博客分类:
  • java
 
阅读更多
/**
	 * @param list 查询的列表集合(转范型之后的集合)
	 * @param fileName 资源文件名
	 * @param headArray  头部数组
	 * @param widthArray  设置excel每列的宽度
	 * @param cols 显示多少列减1
	 * @param c 反射的类(通过它可以访问类中的属性以及方法)
	 * @return
	 * @throws Exception
	 */
		@SuppressWarnings("rawtypes")
		public static String export(List list,String fileName,String[] headArray,int[] width,int cols,Class<?> c,HttpServletResponse response)throws Exception{
			try{ 
				/*********创建excel阶段*********/ 
				 String exportfileName = fileName +"-"+ DateUtil.today() ;
				//设置响应方式
				response.setContentType("application/vnd.ms-excel;charset=utf-8");
			//	String name = URLEncoder.encode(exportfileName, "UTF-8");
				String name=new String((exportfileName).getBytes("gbk"),"iso8859-1");
	
				response.setHeader("Content-Disposition", "attachment;filename="+name);
			    //创建execl第一行数句(标题)
				
				// 标题字体
				jxl.write.WritableFont wfc = new jxl.write.WritableFont(
				jxl.write.WritableFont.COURIER, 13, jxl.write.WritableFont.NO_BOLD, true);
				jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
				wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
				wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
				wcfFC.setBackground(Colour.GREY_50_PERCENT);
				
				//创建一个excel文档
				WritableWorkbook book = Workbook.createWorkbook(response.getOutputStream());
				//创建sheet工作表+ ".xls"
				WritableSheet sheet = book.createSheet(exportfileName+"数据报表.xls", 0);
				//创建字体对象
				WritableFont font = new WritableFont(WritableFont.createFont("黑体"),13,WritableFont.NO_BOLD);
				WritableFont font2 = new WritableFont(WritableFont.createFont("黑体"),12,WritableFont.NO_BOLD);
				
				//创建格式化对象
				WritableCellFormat format = new WritableCellFormat();
				format.setFont(font);//设置字体
				format.setAlignment(Alignment.CENTRE);//设置居中
				format.setVerticalAlignment(VerticalAlignment.CENTRE);
				format.setBackground(Colour.GRAY_25);//设置背景色
				
				WritableCellFormat format2 = new WritableCellFormat();
				format2.setFont(font2);//设置字体
				format2.setAlignment(Alignment.CENTRE);//设置居中
				format2.setVerticalAlignment(VerticalAlignment.CENTRE);
				
			    /***********开始写第二行已下的数据************/
				for (int i = 0; i < headArray.length; i++) {
					sheet.addCell(new Label(i,cols,headArray[i],format));//添加表头
					sheet.setColumnView(i, width[i]);
					
				}
		    	//得到类中所有的属性
				Field[] fields=c.getDeclaredFields();
		    	for (int i = 0; i < list.size(); i++) {
		    		Object object=list.get(i);
		    		for (int j = 0; j < cols; j++) {
		    		   String sname = fields[j].getName(); // 获取属性的名字
		    		   sname = sname.substring(0, 1).toUpperCase() + sname.substring(1); // 将属性的首字符大写,方便构造get,set方法
					if(fields[j].getGenericType().toString().equals("class java.lang.String")){
						  Method m = (Method) object.getClass().getMethod("get" +sname);  
						  String val = (String) m.invoke(object);
						  if (val != null) {  
							  sheet.addCell(new Label(j,i+(cols+1),val,format2));
		                    }else{
		                    	sheet.addCell(new Label(j,i+(cols+1),"",format2));
		                    }  
					}
					 // 如果类型是Integer  
	                if (fields[j].getGenericType().toString().equals("class java.lang.Integer")) {  
	                    Method m = (Method) object.getClass().getMethod("get" +sname);  
	                    Integer val = (Integer) m.invoke(object);  
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),val+"",format2));
	                    }else{
	                    	sheet.addCell(new Label(j,i+(cols+1),0+"",format2));
	                    }  
	                }  
	                // 如果类型是Double  
	                if (fields[j].getGenericType().toString().equals("class java.lang.Double")) {  
	                    Method m = (Method) object.getClass().getMethod("get" + sname);  
	                    Double val = (Double) m.invoke(object);  
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),val+"",format2));
	                    } else{
	                    	sheet.addCell(new Label(j,i+(cols+1),0.0+"",format2));
	                    }   
	                }  
	                // 如果类型是Boolean 是封装类  
	                if (fields[j].getGenericType().toString().equals("class java.lang.Boolean")) {  
	                    Method m = (Method) object.getClass().getMethod(sname);  
	                    Boolean val = (Boolean) m.invoke(object);  
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),val+"",format2));
	                    }  else{
			        sheet.addCell(new Label(j,i+(cols+1),"",format2));
	                    }
	                }  
	                // 如果类型是boolean 基本数据类型不一样 这里有点说名如果定义名是 isXXX的 那就全都是isXXX的  
	                // 反射找不到getter的具体名  
	                if (fields[j].getGenericType().toString().equals("boolean")) {  
	                    Method m = (Method) object.getClass().getMethod(sname);  
	                    Boolean val = (Boolean) m.invoke(object);  
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),val+"",format2));
	                    }  else{
				sheet.addCell(new Label(j,i+(cols+1),"",format2));
	                    }
	                }  
	                // 如果类型是Short  
	                if (fields[j].getGenericType().toString().equals("class java.lang.Short")) {  
	                    Method m = (Method) object.getClass().getMethod("get" + sname);  
	                    Short val = (Short) m.invoke(object);  
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),val+"",format2));
	                    }else{
	                    	sheet.addCell(new Label(j,i+(cols+1),0+"",format2));
	                    }    
	                }
	                // 如果类型是Date 
	                if (fields[j].getGenericType().toString().equals("class java.util.Date")) {  
	                    Method m = (Method) object.getClass().getMethod("get" + sname);  
	                    Date val = (Date) m.invoke(object); 
	                    SimpleDateFormat sfEnd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	                    String time= sfEnd.format(val);
	                    if (val != null) {  
	                    	sheet.addCell(new Label(j,i+(cols+1),time+"",format2));
	                    }else{
	                    	sheet.addCell(new Label(j,i+(cols+1),"",format2));
	                    }    
	                }  
		    	}
			}
	    	// 加入标题
	    	sheet.mergeCells(0, 0, cols-1, cols-1);
	    	sheet.addCell(new jxl.write.Label(0, 0, fileName, wcfFC));
	    	book.write();//写execel文档
			book.close();
			 return exportfileName;
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("存储失败");
			return "false";
		}
	}

2.控制器中的写法。
例:/********* 创建excel阶段 *********/
// 创建第二行数据
String head[] = { "活动", "参与人数", "日登陆玩家数", "互动参与度" }; //导出的列标题
int[] width = new int[] { 25, 20, 20, 20 };
ExportData.export(得到对象的集合, 导出的文件标题, head, width, 4(列标题的个数), GetActiveData.class, response);

 

3.jsp//显示导出excel的dialog
function userExcelDialogShow(){
if ($('input[name=nPlatformID]').val()=="" || $('input[name=nPlatformID]').val()==null) {
$('#msg1').text('平台类型不能为空!');
return false;
}else{
$('#msg1').text('*');
}
if ($('input[name=nAreaID]').val()=="" || $('input[name=nAreaID]').val()==null) {
$('#msg2').text('所在区域不能为空!');
return false;
}else{
$('#msg2').text('*');
}
$('#userFrm').form('submit',{
url:'./userExports.do',
success:function(request){
if(request==false){
$.messager.show({
title:'Error',
msg:'导出失败',
timeout:5000,
showType:'slide'
});
}
}

 



版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Java的Excel导出功能

    提供的文件如"java导出excel实例.doc"和"java导出excel小实例.doc"可能包含了详细的代码示例,用于演示如何使用POI库实现导出功能。"java导出excel文档.txt"和"Java的Excel导出功能.txt"可能是关于该主题的文本说明...

    文件导出功能实现

    本主题将围绕“文件导出功能实现”这一话题展开,重点讲解如何使用Java技术来实现Word文档的导出。 首先,从标题“文件导出功能实现”我们可以推断,我们将探讨的是一个程序或系统如何将数据或内容转换成特定格式的...

    Java导出数据到Excel文件中(支持多页签)

    Java导出数据到Excel文件中,支持多页签形式,如通过Java导出一个名为“各部门人员列表”,然后在文件中有三个页签,分别为“研发部”、“综合部”、“财务部”。其中这三个页签里面的数据就是通过Java导出到Excel...

    java实现excel导出功能

    java实现excel导出功能,通过查询数据库指定数据,将数据以excel方式导出的功能 excel导出的功能

    java中将数据和图片导出到Excel文件

    ### Java中将数据和图片导出到Excel文件 在Java编程环境下实现数据及图片导出至Excel文件是一项常见的任务,特别是在处理报表、数据分析等场景时。本文将详细解析如何通过Java代码来完成这一过程,包括如何创建...

    java word导出功能实现

    在Java编程环境中,导出Word文档是一项常见的任务,特别...以上就是使用Java和Apache POI实现Word导出功能的基本步骤和关键知识点。通过熟练掌握这些技巧,你可以轻松地创建符合模板格式的Word文档,满足各种业务需求。

    java 导出数据为sav格式

    以上是关于"java导出数据为sav格式"的详细知识,涵盖从Java编程到SPSS数据格式,再到Maven私服的使用,希望对理解和实现该功能有所帮助。在实际应用中,还需要注意数据的正确性、错误处理以及性能优化等问题。

    用JAVA导出MYSQL的数据

    总结起来,使用Java导出MySQL数据的关键在于正确调用系统命令`mysqldump`,并管理好输入输出流以确保数据的完整性和编码正确性。同样,导入数据时也需调用`mysql`命令,并确保所有相关的环境变量和权限设置都已就绪...

    java导出SPSS格式文件

    Java导出SPSS格式文件是一项在数据处理领域常见的任务,主要应用于统计分析、社会科学和市场研究等领域。SPSS(Statistical Package for the Social Sciences)是一种强大的统计分析软件,它的数据文件通常具有.SAV...

    java导出oracle数据(单表)

    在本资源中,我们使用了 Java 语言来实现数据导出功能。我们可以根据需要添加不同的参数,例如用户名、密码、数据库名、表名、导出地址、数据过滤条件等。并且,我们可以使用 Java 语言来处理可能出现的错误,并记录...

    java导出图片到excel

    在Java编程中,导出数据到Excel是一种常见的需求,尤其当需要将图片与文本一起展示在电子表格中时。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并未提供直接支持图像到Excel的功能。以下是一些...

    JAVA 导出WORD

    标签中的"java导出word文档"、"jacob word导出"和"word导出图"暗示了这个项目可能还涵盖了在Word文档中插入图片的功能。使用Jacob,可以调用Word的API来插入图片,如下所示: ```java // 获取当前活动文档的Body...

    java 导出excel,带图片的Excel导出

    以下是一些关于如何在Java中实现这一功能的关键知识点: 1. **Apache POI库**:Apache POI是Java领域广泛使用的处理Microsoft Office格式文件的开源库,包括Excel(XLS和XLSX)。使用POI,我们可以创建、修改和读取...

    java导出PDF、导出漂亮PDF、导出指定格式PDF

    我们在项目当中经常要导出pdf文档,pdf文档还要按一定的格式导出,以下介绍导出pdf文档功能: 1)支持A4纸大小导出 2)指定文字显示的位置 3)支持表格展示数据 4)添加水印 5)代码全开源,在多个项目中使用,放心...

    java导出到excel的工具类

    本篇文章将深入探讨如何使用Apache POI创建一个Java工具类来实现高效且灵活的Excel导出功能。 首先,我们需要了解Apache POI的基本用法。Apache POI提供了两种主要的API用于处理Excel文件:HSSF(用于旧版的.xls...

    java导出docx导出pdf

    Java编程语言在处理文档转换方面提供了强大的支持,...综上所述,"java导出docx导出pdf"的项目提供了一个Java解决方案,通过利用Apache POI和iText库,实现了从Docx到PDF的快速转换,适用于各种需要文档转换的场景。

    java导出excel树结构工具类

    该工具类实现java导出树形结构的方法,并未采用excel分组功能实现,而是根据树节点显示层级设置excel样式。针对easyUi,treeGrid开发的导出excel功能。方法简便实用、性强、通俗易懂。项目中亲测,no problem。

    Java Excel导出代码和jar包

    Java导出Excel封装工具类&支撑jar包。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    java导出文件文件名处理

    ### Java导出文件名处理详解 在Java Web开发过程中,经常需要实现文件的导出功能。这涉及到将数据从服务器端导出为特定格式的文件(如Excel、PDF等),并提供给用户下载。在这个过程中,正确处理文件名是非常重要的...

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

Global site tag (gtag.js) - Google Analytics