Java使用excel工具类导出对象功能示例
本文实例讲述了Java使用excel工具类导出对象功能。分享给大家供大家参考,具体如下:
packagecom.gcloud.common;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.xssf.streaming.SXSSFSheet;
importorg.apache.poi.xssf.streaming.SXSSFWorkbook;
importjava.io.FileOutputStream;
importjava.lang.reflect.Method;
importjava.util.ArrayList;
importjava.util.List;
/**
*Createdbycharlinon2017/9/7.
*/
publicclassExcelExportUtil{
//1、定义工作表
privateSXSSFWorkbookworkbook;
//2、定义sheet
privateSheetsheet;
//3、定义保存在内存中的数量,-1表示手动控制
privateintflushRows;
/**
*4、导出文件行数
*/
privateintrowNum;
/**
*5、导出文件列数
*/
privateintcolNum;
/**
*6、导出文件的存放路径
*/
privateStringfilePath;
/**
*7、下载导出文件的路径
*/
privateStringfileWebPath;
/**
*8、文件名称前缀
*/
privateStringfilePrefix;
/**
*9、导出文件全路径
*/
privateStringfileAllPath;
/**
*10、导出文件列标题
*/
privateListfieldNames;
/**
*11、导出文件每列代码,用于反射获取对象属性值
*/
privateListfieldCodes;
//---构造方法-----------------------------------------
publicExcelExportUtil(){
}
publicExcelExportUtil(SXSSFWorkbookworkbook){
this.workbook=workbook;
}
publicstaticExcelExportUtilstart(StringfilePath,StringfileWebPath,StringfilePrefix,ListfieldNames,ListfieldCodes,intflushRows)throwsException{
ExcelExportUtilexcelExportUtil=newExcelExportUtil();
excelExportUtil.setFilePath(filePath);
excelExportUtil.setFileWebPath(fileWebPath);
excelExportUtil.setFilePrefix(filePrefix);
excelExportUtil.setFieldNames(fieldNames);
excelExportUtil.setFieldCodes(fieldCodes);
//设置输出行数
excelExportUtil.setWorkbook(newSXSSFWorkbook(flushRows));
//设置sheet
excelExportUtil.setSheet(excelExportUtil.getWorkbook().createSheet());
excelExportUtil.writeTitles();
returnexcelExportUtil;
}
/**
*创建标题
*
*@throwsException
*/
publicvoidwriteTitles()throwsException{
rowNum=0;
colNum=fieldNames.size();
//创建行
Rowrow=sheet.createRow(rowNum);
//在每列第一行输出标题
for(inti=0;idatalist)throwsException{
rowNum++;
Rowrow=sheet.createRow(rowNum);
intdataSize=datalist.size();
for(inti=0;ii?datalist.get(i):"");
}
}
/**
*手动刷新方法,如果flushRows为-1则需要使用此方法手动刷新内存
*@paramflushNum
*@throwsException
*/
publicvoidflush(intflushNum)throwsException{
((SXSSFSheet)sheet).flushRows(flushNum);
}
/**
*导出文件
*@return
*@throwsException
*/
publicStringexportFile()throwsException{
StringfileName=filePrefix+"_"+DateUtil.getCurrentTimeFileName()+".xlsx";
FileOutputStreamfos=newFileOutputStream(filePath+fileName);
workbook.write(fos);
fos.close();
setFileAllPath(fileWebPath+fileName);
returnfileWebPath+fileName;
}
/**
*导出excel通用方法
*@paramfield
*@parampath
*@paramwebpath
*@paramfilePrefix
*@paramdatas
*@paramflushRows
*@return
*@throwsException
*/
publicExcelExportUtilexcelExport(Stringfield,Stringpath,Stringwebpath,StringfilePrefix,Listdatas,intflushRows)throwsException{
//导出字段代码和名称
String[]fieldArr=field.split(",");
//获取导出字段名称
ListfieldNames=newArrayList();
//获取导出字段代码
ListfieldCodes=newArrayList();
for(inti=0;igetFieldNames(){
returnfieldNames;
}
publicvoidsetFieldNames(ListfieldNames){
this.fieldNames=fieldNames;
}
publicListgetFieldCodes(){
returnfieldCodes;
}
publicvoidsetFieldCodes(ListfieldCodes){
this.fieldCodes=fieldCodes;
}
}
更多关于java相关内容感兴趣的读者可查看本站专题:《Java操作Excel技巧总结》、《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》及《Java操作DOM节点技巧总结》
希望本文所述对大家java程序设计有所帮助。