当前位置: 首页 > news >正文

网站建设公司企业文化52种新颖的促销方式

网站建设公司企业文化,52种新颖的促销方式,建什么网站好,怎么做类似淘宝的网站概述 GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具 EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的…

概述

GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具

EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

EasyExcel

快速入门

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>
这个错误通常是由于您的项目使用了 SLF4J 日志框架(Simple Logging Facade for Java),但无法找到对应的日志实现。
SLF4J 只是一个日志框架,它并不提供具体的日志实现。
要解决这个问题,您需要添加一个 SLF4J 的日志实现,例如 Logback 或 Log4j。
这些实现可以将 SLF4J 的 API 转换为特定的日志系统的 API,并提供日志记录功能。
如果使用的是 Maven,则可以通过以上方式添加 Logback 日志实现:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@ExcelProperty("序号")private Integer id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;@ExcelProperty("生日")private Date birthday;
}

写操作

方式一

@Testvoid test1() {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表1.xlsx";EasyExcel.write(fileName,User.class).sheet("用户信息1").doWrite(userList);}

方式二

 @Testvoid test2() {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表2.xlsx";// 创建excelWriter对象ExcelWriter excelWriter = EasyExcel.write(fileName, User.class).build();// 创建writeSheet对象WriteSheet writeSheet = EasyExcel.writerSheet("用户信息2").build();// 写入数据excelWriter.write(userList,writeSheet);// 关闭流操作excelWriter.finish();}

排除写入的字段

 @Testvoid test3() {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表3.xlsx";
​Set<String> set =  new HashSet<>();set.add("age");set.add("birthday");
​EasyExcel.write(fileName,User.class)// 排除列.excludeColumnFieldNames(set).sheet("用户信息3").doWrite(userList);}
​

允许写入的字段

 @Testvoid test4() {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表4.xlsx";
​Set<String> set =  new HashSet<>();set.add("age");set.add("birthday");
​EasyExcel.write(fileName,User.class)// 指定列.includeColumnFieldNames(set).sheet("用户信息4").doWrite(userList);}

对Excel列排序

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@ExcelProperty(value = "序号",index = 0)private Integer id;@ExcelProperty(value = "姓名",index = 1)private String name;@ExcelProperty(value = "年龄",index = 3)private Integer age;@ExcelProperty(value = "生日",index = 2)private Date birthday;
}

复杂头数据写入

image-20230414151925086

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {@ExcelProperty({"基本信息","编号"})private Integer id;@ExcelProperty({"基本信息","姓名"})private String name;@ExcelProperty({"基本信息","年龄"})private Integer age;@ExcelProperty({"日期","入职"})private Date entry;@ExcelProperty({"日期","离职"})private Date leave;
}
​
​@Testvoid test5() {List<Emp> empList = new ArrayList<>();// 添加用户信息empList.add(new Emp(1, "张三", 23, new Date(),new Date()));empList.add(new Emp(2, "李四", 24, new Date(),new Date()));empList.add(new Emp(3, "王五", 25, new Date(),new Date()));empList.add(new Emp(4, "赵六", 26, new Date(),new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/员工信息表1.xlsx";EasyExcel.write(fileName,Emp.class).sheet("员工信息表1").doWrite(empList);}

重复多次写入

写到单个Sheet
 @Testvoid test6 () {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表5.xlsx";// 创建excelWriter对象ExcelWriter excelWriter = EasyExcel.write(fileName, User.class).build();// 创建writeSheet对象WriteSheet writeSheet = EasyExcel.writerSheet("用户信息5").build();// 写10次for (int i = 0; i < 10; i++) {excelWriter.write(userList,writeSheet);}// 关闭流excelWriter.finish();}
写到多个Sheet
@Testvoid test7 () {List<User> userList = new ArrayList<>();// 添加用户信息userList.add(new User(1, "张三", 23, new Date()));userList.add(new User(2, "李四", 24, new Date()));userList.add(new User(3, "王五", 25, new Date()));userList.add(new User(4, "赵六", 26, new Date()));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/用户信息表6.xlsx";// 创建excelWriter对象ExcelWriter excelWriter = EasyExcel.write(fileName, User.class).build();// 写10次for (int i = 1; i <= 10; i++) {// 创建writeSheet对象WriteSheet writeSheet = EasyExcel.writerSheet("用户信息"+i).build();excelWriter.write(userList,writeSheet);}// 关闭流excelWriter.finish();}

日期、数字或者自定义格式转换

@NumberFormat("#.##")
@ExcelProperty("薪资")    
日期格式化
@DateTimeFormat("yyyy年MM月dd日")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {@ExcelProperty({"基本信息","编号"})private Integer id;@ExcelProperty({"基本信息","姓名"})private String name;@ExcelProperty({"基本信息","年龄"})private Integer age;@DateTimeFormat("yyyy年MM月dd日")@ExcelProperty({"日期","入职"})private Date entry;@DateTimeFormat("yyyy年MM月dd日")@ExcelProperty({"日期","离职"})private Date leave;@NumberFormat("#.##")@ExcelProperty({"薪资"})private Double salary;
}
​@Testvoid test8() {List<Emp> empList = new ArrayList<>();// 添加用户信息empList.add(new Emp(1, "张三", 23, new Date(),new Date(),8234.333));empList.add(new Emp(2, "李四", 24, new Date(),new Date(),8234.333));empList.add(new Emp(3, "王五", 25, new Date(),new Date(),8234.333));empList.add(new Emp(4, "赵六", 26, new Date(),new Date(),8234.333));// 输出目录String fileName = "/Users/whitecamellia/Desktop/test/员工信息表2.xlsx";EasyExcel.write(fileName,Emp.class).sheet("员工信息表2").doWrite(empList);}

图片导出

ImageData

@Data
public class ImageData {// 抽象文件表示图片@ExcelProperty(value = "图1")private File file;// 输入流表示一个图片@ExcelProperty(value = "图2")private InputStream inputStream;/** 如果string类型保存一个图片,必须使用StringImageConverter转换器*/@ExcelProperty(converter = StringImageConverter.class,value = "图3")private String string;// 二进制数组表示图片@ExcelProperty(value = "图4")private byte[] byteArray;// 网络链接表示图片 */@ExcelProperty(value = "图5")private URL url;
}@Testvoid test9 () throws Exception {String fileName = "/Users/whitecamellia/Desktop/test/xxx.xlsx";String imageLocalUrl = "/Users/whitecamellia/资料/xx/xxx/xxxx .jpg";String imageUrl = "https://www.mianfeiwendang.com/pic/1da74e363276b769ac770539/4-810-jpg_6-1080-0-0-1080.jpg";List<ImageData> list = new ArrayList<>();ImageData imageData = new ImageData();imageData.setFile(new File(imageLocalUrl));imageData.setInputStream(new FileInputStream(imageLocalUrl));imageData.setString(imageLocalUrl);byte[] b = new byte[(int) new File(imageLocalUrl).length()];FileInputStream fileInputStream = new FileInputStream(imageLocalUrl);fileInputStream.read(b);imageData.setByteArray(b);imageData.setUrl(new URL(imageUrl));list.add(imageData);EasyExcel.write(fileName, ImageData.class).sheet("图片").doWrite(list);}

列宽行高设置

@ContentRowHeight(2000)//设置内容高度
@HeadRowHeight(50)//设置标题高度
@ColumnWidth(45)//设置列宽
@Data
public class ImageData {// 抽象文件表示图片@ColumnWidth(255)//设置列宽@ExcelProperty(value = "图1")private File file;....
}@Testvoid test9 () {.....}

样式

StyleDate

@HeadRowHeight(50) //设置标题高度
// 头背景设置为红色(10)  enum IndexedColors
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,fillForegroundColor = 10)
// 头字体 设置为40
@HeadFontStyle(fontHeightInPoints = 40)
// 内容背景设置为红色(10)
@ContentStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,fillForegroundColor = 14)
// 内容字体 设置为30
@ContentFontStyle(fontHeightInPoints = 30)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {@ExcelProperty({"基本信息","编号"})private Integer id;@ExcelProperty({"基本信息","姓名"})private String name;@ExcelProperty({"基本信息","年龄"})private Integer age;@DateTimeFormat("yyyy年MM月dd日")@ExcelProperty({"日期","入职"})private Date entry;@DateTimeFormat("yyyy年MM月dd日")@ExcelProperty({"日期","离职"})private Date leave;@NumberFormat("#.##")@ExcelProperty({"薪资"})private Double salary;
}
​@Testvoid test8 () {.....}

合并单元格

@OnceAbsoluteMerge(firstRowIndex = 2, lastRowIndex = 3, firstColumnIndex = 2, lastColumnIndex = 3)
public class Emp {@ExcelProperty({"基本信息","编号"})private Integer id;@ExcelProperty({"基本信息","姓名"}).....
}@Testvoid test8 () {.....}

读操作

方式一

 @Testvoid test1 () {String fileName = "/Users/whitecamellia/Desktop/test/用户信息表1.xlsx";EasyExcel.read(fileName, User.class, new AnalysisEventListener<User>() {@Overridepublic void invoke(User user, AnalysisContext analysisContext) {// 每读一行 执行一次 ,可以在这里执行db操作,这里读取时尽量不要在User上加indexSystem.out.println("读取到的数据是:" + user);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// 读完数据 最后做一次System.out.println("全部读取完毕!");
​}}).sheet().doRead();}

DemoData

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private Integer age;private Date birthday;
}

方式二

 @Testvoid test2 () {String fileName = "/Users/whitecamellia/Desktop/test/用户信息表1.xlsx";ExcelReader excelReader = EasyExcel.read(fileName, User.class, new AnalysisEventListener<User>() {
​@Overridepublic void invoke(User user, AnalysisContext analysisContext) {// 每读一行 执行一次 ,可以在这里执行db操作,这里读取时尽量不要在User上加indexSystem.out.println("读取到的数据是:" + user);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// 读完数据 最后做一次System.out.println("全部读取完毕!");}}).build();
​ReadSheet readSheet = EasyExcel.readSheet(0).build();excelReader.read(readSheet);//关闭流资源,在读取文件时,会创建临时文件,如果不关闭,磁盘会挂掉。excelReader.finish();}

通过名称读取列

通过名称或者下标读取列

image-20230423192702864

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@ExcelProperty(value = "年龄")private Integer age;@ExcelProperty(value = "生日")private Date birthday;@ExcelProperty(value = "序号")private Integer id;@ExcelProperty(value = "姓名")private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@ExcelProperty(index = 2)private Integer age;@ExcelProperty(index = 3)private Date birthday;@ExcelProperty(index = 0)private Integer id;@ExcelProperty(index = 1)private String name;
}

数据格式化

image-20230423195046998

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@ExcelProperty(index = 2)private Integer age;@ExcelProperty(index = 3)@DateTimeFormat("yyyy年MM月dd日  HH:mm:ss")private Date birthday;@ExcelProperty(index = 0)private Integer id;@ExcelProperty(index = 1)private String name;@ExcelProperty(index = 4)@NumberFormat("#.##") //小数点后保留2位,注意,必须用String类型,不可以用Double类型private String salary;
}

读取全部或者多个Sheet

image-20230423225358258

image-20230423225412748

doReadAll();

sheet(0).doRead();

 @Testvoid test4 () {String fileName = "/Users/whitecamellia/Desktop/test/用户信息表1.xlsx";EasyExcel.read(fileName, User.class, new AnalysisEventListener<User>() {@Overridepublic void invoke(User user, AnalysisContext analysisContext) {// 每读一行 执行一次 ,可以在这里执行db操作,这里读取时尽量不要在User上加indexSystem.out.println("读取到的数据是:" + user);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// 读完数据 最后做一次System.out.println("全部读取完毕!");
​}}).doReadAll();}
​
​@Testvoid test5 () {String fileName = "/Users/whitecamellia/Desktop/test/用户信息表1.xlsx";// 读取文件ExcelReader excelReader = EasyExcel.read(fileName).build();// 构建sheet0ReadSheet sheet0 = EasyExcel.readSheet(0).head(User.class).registerReadListener(new AnalysisEventListener<User>() {@Overridepublic void invoke(User user, AnalysisContext analysisContext) {System.out.println("sheet0读取到的数据是:" + user);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("sheet0全部读取完毕!");}}).build();
​// 构建sheet1ReadSheet sheet1 = EasyExcel.readSheet(1).head(User.class).registerReadListener(new AnalysisEventListener<User>() {@Overridepublic void invoke(User user, AnalysisContext analysisContext) {System.out.println("sheet1读取到的数据是:" + user);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("sheet1全部读取完毕!");}}).build();// 读取sheet0,sheet1excelReader.read(sheet0,sheet1);//关闭流资源,在读取文件时,会创建临时文件,如果不关闭,磁盘会挂掉。excelReader.finish();}

填充Excel

填充类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class FillData {private String name;private Integer age;private String clazz;private double score;private String desc;
}

简单填充

  @Testvoid test6 () {// 1.根据哪个模版进行填充String templateName = "/Users/whitecamellia/Desktop/test/template.xlsx";// 2.填充完成之后的ExcelString fullFileName = "/Users/whitecamellia/Desktop/test/fullFileName.xlsx";// 3.构建填充数据FillData fillData = new FillData("小明",20,"3年2班",85.5,"这次没考好!");// 4.进行填充EasyExcel.write(fullFileName).withTemplate(templateName).sheet().doFill(fillData);}
 

列表填充

image-20230423234350301

 @Testvoid test7 () {// 1.根据哪个模版进行填充String templateName = "/Users/whitecamellia/Desktop/test/template.xlsx";// 2.填充完成之后的ExcelString fullFileName = "/Users/whitecamellia/Desktop/test/fullFileName.xlsx";// 3.构建填充数据FillData fillData1 = new FillData("小明",20,"3年2班",85.5,"这次没考好!");FillData fillData2 = new FillData("小红",21,"3年3班",99.5,"这次还不错!");List<FillData> list = new ArrayList<>();list.add(fillData1);list.add(fillData2);// 4.进行填充EasyExcel.write(fullFileName).withTemplate(templateName).sheet(0).doFill(list);}


文章转载自:
http://repeal.Lgnz.cn
http://coalize.Lgnz.cn
http://adieux.Lgnz.cn
http://evection.Lgnz.cn
http://bisulphate.Lgnz.cn
http://glyptograph.Lgnz.cn
http://road.Lgnz.cn
http://donghai.Lgnz.cn
http://mome.Lgnz.cn
http://viticultural.Lgnz.cn
http://mystic.Lgnz.cn
http://aching.Lgnz.cn
http://overfulfil.Lgnz.cn
http://acinaceous.Lgnz.cn
http://scourway.Lgnz.cn
http://transitive.Lgnz.cn
http://backstab.Lgnz.cn
http://reproducible.Lgnz.cn
http://catechetics.Lgnz.cn
http://demurely.Lgnz.cn
http://sailboat.Lgnz.cn
http://insensible.Lgnz.cn
http://interwork.Lgnz.cn
http://veery.Lgnz.cn
http://landlord.Lgnz.cn
http://tribological.Lgnz.cn
http://carsey.Lgnz.cn
http://indiscernibly.Lgnz.cn
http://present.Lgnz.cn
http://dniester.Lgnz.cn
http://stickman.Lgnz.cn
http://trichopathic.Lgnz.cn
http://halid.Lgnz.cn
http://approved.Lgnz.cn
http://thalia.Lgnz.cn
http://psilanthropy.Lgnz.cn
http://hairbell.Lgnz.cn
http://oxherd.Lgnz.cn
http://setiparous.Lgnz.cn
http://poikilothermal.Lgnz.cn
http://plastogene.Lgnz.cn
http://emendatory.Lgnz.cn
http://robomb.Lgnz.cn
http://thought.Lgnz.cn
http://printmaker.Lgnz.cn
http://eguttulate.Lgnz.cn
http://asway.Lgnz.cn
http://abomasum.Lgnz.cn
http://whereabout.Lgnz.cn
http://earbender.Lgnz.cn
http://faintheart.Lgnz.cn
http://prehistoric.Lgnz.cn
http://disastrous.Lgnz.cn
http://neuropsychosis.Lgnz.cn
http://gerefa.Lgnz.cn
http://presentive.Lgnz.cn
http://funambulist.Lgnz.cn
http://psoralen.Lgnz.cn
http://dichasium.Lgnz.cn
http://pisciculturist.Lgnz.cn
http://inly.Lgnz.cn
http://tula.Lgnz.cn
http://admix.Lgnz.cn
http://constable.Lgnz.cn
http://bullwhip.Lgnz.cn
http://quaich.Lgnz.cn
http://bandersnatch.Lgnz.cn
http://upstart.Lgnz.cn
http://reexamine.Lgnz.cn
http://mutt.Lgnz.cn
http://flabbiness.Lgnz.cn
http://pyknic.Lgnz.cn
http://midday.Lgnz.cn
http://robotistic.Lgnz.cn
http://cenospecies.Lgnz.cn
http://accentual.Lgnz.cn
http://futilitarian.Lgnz.cn
http://phrasemongering.Lgnz.cn
http://hydroplane.Lgnz.cn
http://cotemporaneous.Lgnz.cn
http://jokester.Lgnz.cn
http://tmv.Lgnz.cn
http://analyser.Lgnz.cn
http://dysphonia.Lgnz.cn
http://antigas.Lgnz.cn
http://polite.Lgnz.cn
http://lariat.Lgnz.cn
http://carcinogenicity.Lgnz.cn
http://dooly.Lgnz.cn
http://baptismally.Lgnz.cn
http://stabling.Lgnz.cn
http://headboard.Lgnz.cn
http://guesthouse.Lgnz.cn
http://hydroboration.Lgnz.cn
http://tobago.Lgnz.cn
http://trichinosis.Lgnz.cn
http://taws.Lgnz.cn
http://orgasm.Lgnz.cn
http://whereinto.Lgnz.cn
http://trilobed.Lgnz.cn
http://www.15wanjia.com/news/86087.html

相关文章:

  • 怎样办网站优化seo哪家好
  • 外贸建站seoseo排名软件价格
  • 团购网站建设方案病毒式营销案例
  • 网站建设市场分析报告营销策略分析包括哪些内容
  • 驻马店网站建设公司seo推广教学
  • 网站关键字优化软件淮北网站建设
  • 山东企业网站建设哪家好有没有免费的seo网站
  • 网站文件夹怎么做网站关键词怎么设置
  • 上海网站推广专员需求百度推广官方网站
  • 西安专业网站建设公司搜索引擎的优化方法
  • 电子商务网站建设的教案网络链接推广
  • 厦门律师网站建设windows优化大师官方免费
  • wordpress 动态网站模板下载湛江今日头条
  • 青海网站制作公司免费网站软件推荐
  • 已备案网站数量企业网站优化服务
  • 网站建设seo优化公司最权威的排行榜网站
  • 网站根目录在哪wordpressweb3域名注册
  • 网站semseo先做哪个seo百度推广
  • 建站全过程全国新冠疫情最新情况
  • 用vs2010做免费网站模板下载百度权重排名
  • app网站公司北京seo优化排名
  • 个人网上怎样注册公司宁波网站排名优化seo
  • 大连网站制作公司58北京seo优化外包
  • 有没有什么做海报字体的网站seo快速排名首页
  • 比较好约的网站设计找合作项目app平台
  • 常州网站开发公司推荐吉林seo网络推广
  • pc蛋蛋网站开发优化网站seo
  • 抖音创作者服务平台常州seo博客
  • 做微信商城网站搜索软件使用排名
  • 顺德佛山做app网站app推广代理去哪里找