Java使用excel工具类导出对象功能示例

  

本文实例讲述了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,导出文件每列代码,用于反射获取对象属性值   */私人ListfieldCodes;//- - -构造方法- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   公共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工具类导出对象功能示例