首页天道酬勤excel多sheet导入导出,数据导入模板生成

excel多sheet导入导出,数据导入模板生成

张世龙 05-06 10:36 72次浏览
在开发中,excel的处理、导出分析的导入等,java中通常使用要点,但每次都需要编写大致的工具类来完成。 在这里,我推荐别人制作的车轮【easypoi】。 介绍“车轮”的使用方法。 在pom部署中,其他jardependencygroupidcn.after turn/groupidartifactideasypoi-base/artifactidversion3.0.3/version/ependendion groupidartifactideasypoi-web/artifactidversion3.0.3/version/dependency groupidartifactideasypoi-annotation/ation 否则,有关“创建对象错误”的注释@excency @ExcelEntity、@ExcelIgnore、@ExcelTarget等在此不可用。 公式中,nameStringnull列名needMergebooleanfasle允许您查看纵向合并单元格orderNumString'0的属性类型name_idreplaceString[]{}值得替换的导出是b_id}导入相反,savePathString'upload '导入文件保存路径typeint1导出类型1为文本2为图像,3为函数,10为数字默认为文本widthdouble10列宽height 这个会被废弃。 请注意,isStatisticsbooleanfasle会自动合并数据,添加一行进行合并,并异常读取所有数据和输出处理。 isHyperlinkbooleanfalse超链接在需要实现isImportFieldbooleantrue检查字段时,会检查导入的Excel中是否存在此字段。 如果未说明是错误的Excel,读取将失败。 支持使用name_idexportFormatString“”导出的时间格式。 它是否为空,以确定是否需要格式化日期导入格式字符串“”中导入的时间格式,以及是否需要格式化日期格式字符串“”中的时间格式相当于同时设置导出格式和importformatdatabaseformatstring ' yyymmdd hhmmss '的导出时间设置。 如果字段是Date类型,则不需要设置数据库;如果字段是字符串类型,则必须设置此数据库格式。 用于转换时间格式并输出numFormatString“”的数字格式。 参数为Pattern,使用的对象从DecimalFormatimageTypeint1导出文件中读取2,这是缺省情况下从数据库中读取的文件,同样导入时也是相同的suffixString '。 您可以合并\nmergeRelyint[]{}单元格依赖关系,方法是% 90变为90%isWrapbooleantrue时是否换行。 例如,如果第二列合并基于第一列,{1}则可以在mergeverticalbooleanfasle中垂直合并内容相同的单元格。 import java.util.Date; 公共类人员{ @ excel (name='名称',orderNum='0' ) }专用字符串名称; @excel(name='性别',replace={ '男_1','女_2'},ordernum='1' }专用sex; @excel(name='生日',exportFormat='yyyy-MM-dd ',orderNum='2' )专用日期birthday; PublicPerson(stringname,String sex,Date birthday ) { this.name=name; this.sex=sex; this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; }} 导入导出公用方法 public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass,String fileName,boolean isCreateHeader, HttpServletResponse response){ ExportParams exportParams = new ExportParams(title, sheetName); exportParams.setCreateHeadRows(isCreateHeader); defaultExport(list, pojoClass, fileName, response, exportParams); } public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass,String fileName, HttpServletResponse response){ defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName)); }public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response){ defaultExport(list, fileName, response); } private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) { Workbook workbook = ExcelExportUtil.exportExcel(exportParams,pojoClass,list); if (workbook != null); downLoadExcel(fileName, response, workbook); } private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) { try { response.setCharacterEncoding("UTF-8"); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); workbook.write(response.getOutputStream()); } catch (IOException e) { throw new NormalException(e.getMessage()); } }private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) { Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); if (workbook != null); downLoadExcel(fileName, response, workbook); } public static <T> List<T> importExcel(String filePath,Integer titleRows,Integer headerRows, Class<T> pojoClass){ if (StringUtils.isBlank(filePath)){ return null; } ImportParams params = new ImportParams(); params.setTitleRows(titleRows); params.setHeadRows(headerRows); List<T> list = null; try { list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); }catch (NoSuchElementException e){ throw new NormalException("模板不能为空"); } catch (Exception e) { e.printStackTrace(); throw new NormalException(e.getMessage()); } return list; } public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass){ if (file == null){ return null; } ImportParams params = new ImportParams(); params.setTitleRows(titleRows); params.setHeadRows(headerRows); List<T> list = null; try { list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); }catch (NoSuchElementException e){ throw new NormalException("excel文件不能为空"); } catch (Exception e) { throw new NormalException(e.getMessage()); } return list; }

对的,没看错,这就可以导出导入了,看起来代码挺多,其实是提供了多个导入导出方法而已

测试 @RequestMapping("export") public void export(HttpServletResponse response){ //模拟从数据库获取需要导出的数据 List<Person> personList = new ArrayList<>(); Person person1 = new Person("fkdsj","1",new Date()); Person person2 = new Person("娜美","2", DateUtils.addDate(new Date(),3)); Person person3 = new Person("ddddy","1", DateUtils.addDate(new Date(),10)); Person person4 = new Person("小狸猫","1", DateUtils.addDate(new Date(),-10)); personList.add(person1); personList.add(person2); personList.add(person3); personList.add(person4); //导出操作 FileUtil.exportExcel(personList,"花名册","草帽一伙",Person.class,"海贼王.xls",response); } @RequestMapping("importExcel") public void importExcel(){ String filePath = "F:\\海贼王.xls"; //解析excel, List<Person> personList = FileUtil.importExcel(filePath,1,1,Person.class); //也可以使用MultipartFile,使用 FileUtil.importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass)导入 System.out.println("导入数据一共【"+personList.size()+"】行"); //TODO 保存数据库 } 导出结果 导出结果 测试导入

导出结果再添加一行,执行,输出导入数据行数

excel表格导入excel文件,excel多sheet导入导出