其实java微网站源码分享下载的问题并不复杂,但是又很多的朋友都不太了解网站,因此呢,今天小编就来为大家分享java微网站源码分享下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
介绍语
本号主要是Java常用关键技术点,通用工具类的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!
望各位码友点击关注,冲1000粉。后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊
如果码友觉得代码太长,可以从头到尾快速扫射一遍,了解大概即可。觉得有用后再转发收藏,以备不时之需。
正文:
excel导入导出工具类,今天整理出来了,看了下项目中用的居然还是1.x版本,整理时升级到easyexcel3.0.2最新版本,没想到之前封装的一堆代码都不需要,现在这个版本太好用了。大家可以直接使用easyexcel的方法,封装多一层是为了项目更方便使用而已。
例子1
读测试
@Test\npublicvoidreadTest(){\n//读取测试\nStringreadFile=&34;;\nList<Student>data=EasyExcelUtil.read(readFile,Student.class);\nprintList(data);\n}\nprivatestaticvoidprintList(List<?>datas){\ninti=0;\nfor(Objectob:datas){\nSystem.out.println(i+++&34;+ob);\n}\n}\n\n//控制台打印\n17:55:58.240[main]INFO-解析完成!读取10行\n0=>Student(name=张1,age=12,address=深圳0栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n1=>Student(name=张1,age=13,address=深圳1栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n2=>Student(name=张1,age=14,address=深圳2栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n3=>Student(name=张1,age=15,address=深圳3栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n4=>Student(name=张1,age=16,address=深圳4栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n5=>Student(name=张1,age=17,address=深圳5栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n6=>Student(name=张1,age=18,address=深圳6栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n7=>Student(name=张1,age=19,address=深圳7栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n8=>Student(name=张1,age=20,address=深圳8栋大楼,birthday=WedNov0312:17:46GMT+08:002021)\n9=>Student(name=张1,age=21,address=深圳9栋大楼,birthday=WedNov0312:17:46GMT+08:002021)
例子2
写测试
@Test\npublicvoidwriteTest(){\n//写入测试\nList<Student>stus=newArrayList<>();\nfor(inti=0;i<10;i++){\nstus.add(newStudent(&34;,12+i,&34;+i+&34;,newDate()));\n}\nStringfile=&34;;\nEasyExcelUtil.write(file,stus);\n}\n\n//控制台无输出,可以在工程跟目录找到导出的文件student信息表2.xlsx
例子3
直接返回给浏览器下载
@RequestMapping(value=&34;,method=RequestMethod.GET)\npublicStringdownload(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{\n\n//写入测试\nList<Student>stus=newArrayList<>();\nfor(inti=0;i<10;i++){\nstus.add(newStudent(&34;,12+i,&34;+i+&34;,newDate()));\n}\nEasyExcelUtil.download(response,stus,&34;);\nreturn&34;;\n}
例子2和例子3导出的文件内容:
excel导出内容
工具类源码:
importcom.alibaba.excel.EasyExcel;\nimportorg.slf4j.Logger;\nimportorg.slf4j.LoggerFactory;\n\nimportjavax.servlet.http.HttpServletResponse;\nimportjava.io.*;\nimportjava.net.URLEncoder;\nimportjava.util.List;\n\n/**\n*excel工具类\n*easyexcel使用的3.0.2版本,跟以前版本有很大区别,且不兼容1.x版本\n*\n*@authorliangxn\n*/\npublicclassEasyExcelUtil{\n\nprivatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(EasyExcelUtil.class);\n\npublicstatic<T>List<T>read(StringfilePath,finalClass<?>clazz){\nFilef=newFile(filePath);\ntry(FileInputStreamfis=newFileInputStream(f)){\nreturnread(fis,clazz);\n}catch(FileNotFoundExceptione){\nLOGGER.error(&34;,filePath,e);\n}catch(IOExceptione){\nLOGGER.error(&34;,e);\n}\n\nreturnnull;\n}\n\npublicstatic<T>List<T>read(InputStreaminputStream,finalClass<?>clazz){\nif(inputStream==null){\nthrownewMyAppRunException(&34;);\n}\n\n//有个很重要的点DataListener不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去\nDataListener<T>listener=newDataListener<>();\n\n//这里需要指定读用哪个class去读,然后读取第一个sheet文件流会自动关闭\nEasyExcel.read(inputStream,clazz,listener).sheet().doRead();\nreturnlistener.getRows();\n}\n\npublicstaticvoidwrite(StringoutFile,List<?>list){\nClass<?>clazz=list.get(0).getClass();\n//新版本会自动关闭流,不需要自己操作\nEasyExcel.write(outFile,clazz).sheet().doWrite(list);\n}\n\npublicstaticvoidwrite(StringoutFile,List<?>list,StringsheetName){\nClass<?>clazz=list.get(0).getClass();\n//新版本会自动关闭流,不需要自己操作\nEasyExcel.write(outFile,clazz).sheet(sheetName).doWrite(list);\n}\n\npublicstaticvoidwrite(OutputStreamoutputStream,List<?>list,StringsheetName){\nClass<?>clazz=list.get(0).getClass();\n//新版本会自动关闭流,不需要自己操作\n//sheetName为sheet的名字,默认写第一个sheet\nEasyExcel.write(outputStream,clazz).sheet(sheetName).doWrite(list);\n}\n\n/**\n*文件下载(失败了会返回一个有部分数据的Excel),用于直接把excel返回到浏览器下载\n*/\npublicstaticvoiddownload(HttpServletResponseresponse,List<?>list,StringsheetName)throwsIOException{\nClass<?>clazz=list.get(0).getClass();\n\n//这里注意有同学反应使用swagger会导致各种问题,请直接用浏览器或者用postman\nresponse.setContentType(&34;);\nresponse.setCharacterEncoding(&34;);\n//这里URLEncoder.encode可以防止中文乱码当然和easyexcel没有关系\nStringfileName=URLEncoder.encode(sheetName,&34;).replaceAll(&34;,&34;);\nresponse.setHeader(&34;,&39;&34;+fileName+&34;);\nEasyExcel.write(response.getOutputStream(),clazz).sheet(sheetName).doWrite(list);\n}\n\n}
相关的其它类
importcom.alibaba.excel.annotation.ExcelProperty;\nimportcom.alibaba.excel.annotation.format.DateTimeFormat;\nimportlombok.AllArgsConstructor;\nimportlombok.Data;\nimportlombok.NoArgsConstructor;\n\nimportjava.util.Date;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublicclassStudent{\n@ExcelProperty(value=&34;,index=0)\nprivateStringname;\n\n@ExcelProperty(value=&34;,index=1)\nprivateintage;\n\n@ExcelProperty(value=&34;,index=2)\nprivateStringaddress;\n\n//easyexcel日期类型不支持LocalDate,只能是Date\n@ExcelProperty(value=&34;,index=3)\n@DateTimeFormat(&34;)\nprivateDatebirthday;\n}
/**\n*通用异常类\n*/\npublicclassMyAppRunExceptionextendsRuntimeException{\n\npublicMyAppRunException(Stringmessage){\nsuper(message);\n}\n\npublicMyAppRunException(Stringmessage,Throwablecause){\nsuper(message,cause);\n}\n\npublicMyAppRunException(Throwablecause){\nsuper(cause);\n}\n\nprotectedMyAppRunException(Stringmessage,\nThrowablecause,\nbooleanenableSuppression,\nbooleanwritableStackTrace){\nsuper(message,cause,enableSuppression,writableStackTrace);\n}\n\n}
鄙人编码十年多,在项目中也积累了一些工具类,很多工具类在每个项目都有在用,很实用。大部分是鄙人封装的,有些工具类是同事封装的,有些工具类已经不记得是ctrl+c的还是自己封装的了,现在有空就会总结项目中大部分的工具类,分享给各位码友。如果文章中涉及的代码有侵权行为请通知鄙人处理。
计划是先把工具类整理出来,正所谓工欲善其事,必先利其器。项目中不管是普通单体项目还是多模块maven项目或是分布式微服务,一部分功能模块都是可以重用的,工具类模块就是其中之一。
好了,文章到这里就结束啦,如果本次分享的java微网站源码分享下载和网站问题对您有所帮助,还望关注下本站哦!
