import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Iterator;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
public class ExportDict {
/**
* 根据类型获取导入其他属性
*
* @param impflag 导入类型
* @return
* @throws DataAccessException
*/
private static BaseParam getExportPros(String exptype)
throws DataAccessException {
try {
Iterator params = null;
ParamClass paramClass = BaseParamClass
.getParamClassByName("DICT_EXPORTDICT");
params = paramClass.getRootParams();
String exptype1 = null;
while (params.hasNext()) {
BaseParam baseParam = (BaseParam) params.next();
exptype1 = (String) baseParam.getCode();
if (exptype.equals(exptype1)) {
return baseParam;
}
}
return null;
} catch (Exception e) {
throw new DataAccessException(e);
}
}
/**
* <p>
* 设定导出属性
*
* @param exptype
* 导出类别,确定要导出哪个表
* @return ExportPO
*/
private static ExportPO getExportPor(String exptype)
throws DataAccessException {
ExportPO exportPO = new ExportPO();
BaseParam baseParam = getExportPros(exptype);
try {
exportPO.setTitles(((String) baseParam.getAttribute("TITLES")).split(","));
exportPO.setTitleCols(((String) baseParam.getAttribute("TITLECOLS")).split(","));
exportPO.setFileName((String) baseParam.getAttribute("FILENAME"));
exportPO.setSheetName((String) baseParam.getAttribute("SHEETNAME"));
} catch (ParamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return exportPO;
}
/**
* <p>
* 导出execl
*
* @param exptype
* 导出类别,确定要导出哪个表
* @param
* @return ExportPO
*/
public static void ExportExecl(com.cvicse.infra.base.BaseVO[] expPOs,
String exptype, HttpServletResponse response)
throws DataAccessException {
// 获取导出属性
System.out.println(exptype);
ExportPO exportPO = getExportPor(exptype);
// 文件名
String fileName = exportPO.getFileName();
// 表单名
String sheetName = exportPO.getSheetName();
try {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ com.cvicse.util.StringUtil
.toUTF8String(fileName + ".xls") + "\"");
OutputStream outputStream = response.getOutputStream();
WritableWorkbook wwb = Workbook.createWorkbook(outputStream);
WritableSheet wrb = wwb.createSheet(sheetName, 0);
Label labelC = null;
// 设置字体
WritableFont wf_data = new WritableFont(WritableFont.ARIAL, 10);
// 设置单元格格式
WritableCellFormat wcf_data = new WritableCellFormat(wf_data);
wcf_data.setBorder(Border.ALL, BorderLineStyle.THIN);
// 自动换行
wcf_data.setWrap(true);
// 垂直居中
wcf_data.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
int titlecol = 0;
for (int titleCount = 0; titleCount < (exportPO.getTitles()).length; titleCount++) {
int row = 0;
labelC = new Label(titlecol++, row,
exportPO.getTitles()[titleCount], wcf_data);
wrb.addCell(labelC);
}
for (int i = 0; i < expPOs.length; i++) {
int row = i + 1;
int col = 0;
com.cvicse.infra.base.BaseVO baseVO = expPOs[i];
Method[] methods = baseVO.getClass().getMethods();
for (int titleColsCount = 0; titleColsCount < (exportPO
.getTitleCols()).length; titleColsCount++) {
String titleCol = exportPO.getTitleCols()[titleColsCount];
for (int methodsCount = 0; methodsCount < methods.length; methodsCount++) {
Method method = methods[methodsCount];
String methodName = method.getName();
if (methodName.startsWith("get")
&& !methodName.startsWith("getClass")) {
String fieldName = methodName.substring(3);
if (fieldName.equals(titleCol)) {
labelC = new Label(col++, row, method.invoke(
baseVO, null)
+ "", wcf_data);
wrb.addCell(labelC);
}
}
}
}
}
wwb.write();
wwb.close();
outputStream.close();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
用java导出一张excel表,一个ExportExcel工具类用来生成excel表,ComplexExportExcelClient报表生成类
本资源实现了Excel的简单导出实例,同时也实现了导出Excel复合表头的简单实例,适合一些需要用到导出Excel技术的初学者。
java的进销存例子,很好用的,是我们小组一起做的,大家一起研究下。
使用java语言导出数据到excel表(xls格式)所必须的jar包
java导出Excel 时候 相同行合并(可合并多列); 已测试通过;
java 导出 excel表 的一个 例子
java导出excel POI jar包 java代码地址http://blog.csdn.net/awenluck/article/details/51488537
java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错
该工具类实现java导出树形结构的方法,并未采用excel分组功能实现,而是根据树节点显示层级设置excel样式。针对easyUi,treeGrid开发的导出excel功能。方法简便实用、性强、通俗易懂。项目中亲测,no problem。
java工程,源代码,可直接运行,需自己改造成web下载方式。
java导出excel
支持从数据库中查询到数据,以多级表头形式导入到Excel文件中。比如:一级表头:学号、姓名、各科成绩。二级表头:语文、数学、英语(二级表头在各科成绩下面)。
Domino notes java版导出excel,需要组件poi支持,解决Domino日常数据批量导出需求!
资源描述:一个使用java做的导出数据,并且可以在excel表生成折线图的工具类,使用简单操作方便。
用Java语言采用接口设计模式、代理设计模式、工厂设计模式实现对excel中的表实现基本的导出(写)功能,把一个对象集合输出到一个excel表中。 【基本功能】 将对象集合导出到Excel表 【扩展功能】 1、自由设置表头 2...
java 数据库 导出 excel
java导出excel表实例,有说明代码注释非常清楚!
java导出复杂Excel内容数据动态循环
java导出数据到excel中的相关jar包。导出Excel的技术有两种Jakarta POI和Java Excel。
从java导出到Excel功能,具备非常好的可用性和可扩展性,实用POI写的。附详细实用说明!