本文实例讲述了Java使用excel工具类导出对象功能。分享给大家供大家参考,具体如下:
包com.gcloud.common; 进口org.apache.poi.ss.usermodel.Cell; 进口org.apache.poi.ss.usermodel.Row; 进口org.apache.poi.ss.usermodel.Sheet; 进口org.apache.poi.xssf.streaming.SXSSFSheet; 进口org.apache.poi.xssf.streaming.SXSSFWorkbook; 进口java.io.FileOutputStream; 进口java.lang.reflect.Method; 进口java.util.ArrayList; 进口并不知道;/* * *由charlin 2017/9/7。 */公开课ExcelExportUtil {//1,定义工作表 私人SXSSFWorkbook工作簿;//2、定义表 私人单表;//3、定义保存在内存中的数量,1表示手动控制 私人int flushRows;/* * * 4、导出文件行数 */私人int rowNum;/* * * 5、导出文件列数 */私人int colNum;/* * * 6,导出文件的存放路径 */私人字符串filePath;/* * * 7,下载导出文件的路径 */私人字符串fileWebPath;/* * * 8,文件名称前缀 */私人字符串filePrefix;/* * * 9,导出文件全路径 */私人字符串fileAllPath;/* * * 10,导出文件列标题 */私人List字段名;/* * * 11,导出文件每列代码,用于反射获取对象属性值 */私人List fieldCodes;//- - -构造方法- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 公共ExcelExportUtil () { } 公共ExcelExportUtil (SXSSFWorkbook工作簿){ 这一点。工作簿=工作簿; } 公共静态ExcelExportUtil开始(fileWebPath filePath的字符串,字符串,字符串filePrefix List 字段名,List {fieldCodes, int flushRows)抛出异常 ExcelExportUtil ExcelExportUtil=new ExcelExportUtil (); excelExportUtil.setFilePath (filePath); excelExportUtil.setFileWebPath (fileWebPath); excelExportUtil.setFilePrefix (filePrefix); excelExportUtil.setFieldNames(字段名); excelExportUtil.setFieldCodes (fieldCodes);//设置输出行数 excelExportUtil。setWorkbook(新SXSSFWorkbook (flushRows));//设置表 .createSheet excelExportUtil.setSheet (excelExportUtil.getWorkbook () ()); excelExportUtil.writeTitles (); 返回excelExportUtil; }/* * *创建标题 * * @throws例外 */公共空间writeTitles()抛出异常{ rowNum=0; colNum=fieldNames.size ();//创建行 行一行=sheet.createRow (rowNum);//在每列第一行输出标题 for (int i=0;我& lt;colNum;我+ +){ 细胞细胞=row.createCell(我); cell.setCellValue (fieldNames.get (i)); } }/* * *写入对象数据 * * @param datalist * @throws例外 */公共空间writeDatas(列表datalist){抛出异常 for (int i=0;我& lt;datalist.size ();我+ +){ rowNum + +;//不断创建行 行一行=sheet.createRow (rowNum); for (int j=0;j & lt;fieldCodes.size ();j + +) { 对象obj=datalist.get (j);//获得得到方法返回的值 对象价值=https://www.yisu.com/zixun/invokeMethod (obj, fieldCodes.get (j),新对象[]{}); 细胞细胞=row.createCell (j); 细胞。setCellValue(价值!=零?value.toString (): "); } } }/* * *获得得到方法返回的值 * @param所有者 * @param字段名 * @param arg游戏 * @return * @throws例外 */私有对象invokeMethod(对象所有者、字符串字段名、对象[]args){抛出异常 字符串methodName="得到" + fieldname.substring (0,1) .toUpperCase () + fieldname.substring (1); 类ownerClass=owner.getClass (); 类[]argsClass=新类(args.length); for (int i=0, j=argsClass。长度;我& lt; j;我+ +){ argsClass[我]=参数[我].getClass (); }=ownerClass方法方法。getMethod (methodName argsClass); 方法返回。调用(所有者,args); }/* * *向导出文件写数据 * * @param datalist存放字符串数组 * @return */公共空间writeDatasByStr (List {datalist)抛出异常 rowNum + +; 行一行=sheet.createRow (rowNum); int dataSize=datalist.size (); for (int i=0;我& lt;colNum;我+ +){ 细胞细胞=row.createCell(我); 细胞。setCellValue (dataSize祝辞我& # 63;datalist.get(我):“”); } }/* * *手动刷新方法,如果flushRows为1则需要使用此方法手动刷新内存 * @param flushNum * @throws例外 */公共空间冲洗(int flushNum)抛出异常{ ((SXSSFSheet)表).flushRows (flushNum); }/* * *导出文件 * @return * @throws例外 */公共字符串exportFile()抛出异常{ 字符串文件名=filePrefix +“_”+ DateUtil.getCurrentTimeFileName () +“.xlsx”; FileOutputStream安全系数=new FileOutputStream (filePath +文件名); workbook.write (fos)提交; fos.close (); setFileAllPath (fileWebPath +文件名); 返回fileWebPath +文件名; }/* * *导出excel通用方法 * @param领域 * @param路径 * @param webpath * @param filePrefix * @param数据 * @param flushRows * @return * @throws例外 */公共ExcelExportUtil excelExport (webpath路径字符串字段,字符串,字符串,字符串filePrefix,列表数据,int flushRows){抛出异常//导出字段代码和名称 String [] fieldArr=field.split (", ");//获取导出字段名称 List Java使用excel工具类导出对象功能示例