这篇文章将为大家详细讲解有关java中export方法如何实现导出excel文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1.export函数
//导出文件接口public String export(){return this.myExport(exportList);}
2.导出列名
private String myExport(List<BusinessDept> list){com.bronzesoft.power.tools.json.JSONObject info = new com.bronzesoft.power.tools.json.JSONObject();try{List<String> headList = new ArrayList<String>(Arrays.asList("年", "月", "部门","部门负责人","经营值","收入", "支出","填报工时","标准工时","经营参数"));Commonutil.export(list,headList,"部门经营总览导出");info = Commonutil.setInfo(info,"部门经营总览导出");}catch (Exception e){LogUtil.error(this.getClass().getName()+".exportExcel()", e);}return info.toString();}
3.export实现方法
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(XSSFWorkbook),一个workbook可以有多个sheet(XSSFSheet)组成,一个sheet是由多个row(XSSFRow)组成,一个row是由多个cell(XSSFCell)组成。
public static <T> boolean export(List<T> list,List<String> headList,String fileName){return myExport(list,headList,fileName,com.bronzesoft.rdm.platform.util.Constants.PATH + com.bronzesoft.power.platform.Constants.TEMPFOLDER_DIR );}//将list导出为excel,文件名为fileNamepublic static <T> boolean myExport(List<T> list,List<String> headList,String fileName,String path){try{if(!checkListAndHead(list,headList)){LogUtil.info( "head的长度有问题,导出的文件不正确" );}File file = new File(path + File.separator + fileName + ".xlsx");if(!file.exists()) {file.createNewFile();}//创建对应excel文件,存储路径path待确定XSSFWorkbook workBook = new XSSFWorkbook();//创建一个excel的sheet页XSSFSheet sheet = workBook.createSheet(fileName);XSSFRow row = null;XSSFCell cell = null;Map<String, CellStyle> styles = StyleUtil.createStyles(workBook);//表头样式CellStyle headCenterIndex = styles.get("headCenter");//列的样式居中,背景颜色为白色CellStyle center = styles.get("centerWhite");row = sheet.createRow(0);//表头数据for (int i = 0; i < headList.size(); i++) {//创建列cell = row.createCell(i);//设置列的valuecell.setCellValue(headList.get(i));//设置列的样式cell.setCellStyle(headCenterIndex);}//表格数据//写入表格数据String codeName = "";int rownum = 1;T obj = null;for(int i = 0; i < list.size(); i++){obj = list.get(i);if(null != obj){Field[] fields = obj.getClass().getDeclaredFields();row = sheet.createRow(rownum);for(int j = 0; j< fields.length; j++){fields[j].setAccessible(true);codeName = String.valueOf(fields[j].get(obj));//创建第j列cell = row.createCell(j);cell.setCellValue(Commonutil.getStringVal(codeName));cell.setCellStyle(center);}}rownum++;}// //i代表列,设置列的宽度// for (int i = 0; i < headList.size(); i++) {// if(i == 0){// sheet.setColumnWidth(i, 2000);// }else if(i == 1 || i == 3){// sheet.setColumnWidth(i, 6000);// }else{// sheet.setColumnWidth(i, 4000);// }// }//将文件写到临时目录FileOutputStream out = new FileOutputStream(file);workBook.write(out);}catch (Exception e){LogUtil.error(fileName + "export失败" );}return true;}//检查head的size是否符合规范public static <T> boolean checkListAndHead(List<T> list,List<String> headList){if(list.size()>0){T t = list.get(0);if(getColumnCount(t) != headList.size()){LogUtil.info( "head的长度有问题" );return false;}}return true;}//获取一个对象成员变量的个数public static <T> int getColumnCount(T t){Field[] fields = t.getClass().getDeclaredFields();int count = fields.length;return count;}
4.前端对接
public static JSONObject setInfo(JSONObject info,String fileName) throws Exception {Storage s = Commonutil.getDefaultStorage();info.put("port", String.valueOf(s.getPort()));info.put("dirAddress", Base64Util.encode(com.bronzesoft.rdm.platform.util.Constants.PATH));info.put("address", Base64Util.encode(com.bronzesoft.power.platform.Constants.TEMPFOLDER_DIR + File.separator + fileName + ".xlsx"));info.put("name", Base64Util.encode(fileName));info.put("extendName", "xlsx");return info;}
5.前端代码
function doExport(){synAjax.tabCall("com.bronzesoft.rdm.SeDeptTotalTab", "export", null, function(data){doDownload(data);});}function doDownload(data){console.log('data',data)r = eval('('+data+')');$("#_file_dir").val(r.dirAddress);$("#_file_address").val(r.address);$("#_file_name").val(r.name);$("#_file_extname").val(r.extendName);if ($.browser.safari) { $("#_file_downform").attr("target", ""); }var servlet = powerPath + "download";$("#_file_downform").attr("action", servlet).submit();}
关于“java中export方法如何实现导出excel文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。