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

代理网站推荐王占山 同济大学

代理网站推荐,王占山 同济大学,国外男女直接做的视频网站,石景山做网站的公司写在前面 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站 文章目录 EasyExcel 框架概述依赖APIExcel 实体类注解写 Excel概念介绍写 Excel 通用参数WriteWorkbookWriteSheetWriteTable 代码…写在前面 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站 文章目录 EasyExcel 框架概述依赖APIExcel 实体类注解写 Excel概念介绍写 Excel 通用参数WriteWorkbookWriteSheetWriteTable 代码示例创建 Excel 文件1配置实体类2Excel 文件的生成和下载 模板打印1定义模板2填充模板并下载 Excel 模板文件 解析 Excel 文件1配置实体类2解析 Excel 文件 拓展csv 读写的支持 EasyExcel 框架 本文仅作为快速入门指南深入学习详见官方文档 概述 Java 解析、生成 Excel 比较有名的框架有Apache poi、jxl但它们都存在一些严重的问题如代码编写繁琐且重复极其耗费内存。EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源项目。在尽可能节约内存的情况下支持读写百万级数据的 Excel。 EasyExcel阿里巴巴开源的操作 Excel 的框架底层封装的 POI可以大大减少占用内存的主要原因是在解析 Excel 时没有将文件数据一次性全部加载到内存中而是从磁盘上一行行读取数据逐个解析。 下图是 easyExcel 和 POI 在解析 Excel 时的对比图 easyExcel 采用一行一行的解析模式并将一行的解析结果以观察者的模式通知处理AnalysisEventListener。 在实体类上配置注解适配 Excel 中的标题调用 EasyExcel 的工具类方法完成文件的上传或者下载 依赖 dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.1.1/version/dependencyAPI Excel 实体类注解 ExcelIgnoreUnannotated标注在实体类上作用是只使用标注了 ExcelProperty 注解的字段参与 excel 读写。默认是不管加不加 ExcelProperty 的注解所有字段都会参与读写 ExcelProperty标注在实体类属性上用于 excel 的列和实体类属性的匹配 参数如下 名称默认值描述value空用于匹配excel中的头必须全匹配如果有多行头会匹配最后一行头orderInteger.MAX_VALUE优先级高于value会根据order的顺序来匹配实体和 excel 中数据的顺序index-1优先级高于value和order会根据index直接指定到excel中具体的哪一列converter自动选择指定当前字段用什么转换器默认会自动选择。写的情况下只要实现com.alibaba.excel.converters.Converter#convertToExcelData(com.alibaba.excel.converters.WriteConverterContextT) 方法即可 ExcelIgnore标注在实体类属性上默认所有字段都会和 excel 去匹配加了这个注解会忽略该字段 DateTimeFormat标注在实体类属性上日期转换 参数如下 名称默认值描述value空参照java.text.SimpleDateFormat书写即可use1904windowing自动选择excel中时间是存储1900年起的一个双精度浮点数但是有时候默认开始日期是1904所以设置这个值改成默认1904年开始 NumberFormat标注在实体类属性上数字转换 参数如下 名称默认值描述value空参照java.text.DecimalFormat书写即可roundingModeRoundingMode.HALF_UP格式化的时候设置舍入模式 写 Excel 概念介绍 WriteWorkbook 可以理解成一个 excel 文件WriteSheet 理解成一个excel 文件里面的一个表单WriteTable 一个表单里面如果有多个实际用的表格则可以用 WriteTablejava 写 Excel 通用参数 WriteWorkbookWriteSheet WriteTable 都会有的参数如果为空默认使用上级。 名称默认值描述converter空默认加载了很多转换器这里可以加入不支持的字段writeHandler空写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler在写入excel的不同阶段会调用relativeHeadRowIndex0写入到excel和上面空开几行head空与clazz二选一。读取文件头对应的列表会根据列表匹配数据建议使用classclazz空与head二选一。读取文件的头对应的class也可以使用注解。如果两个都不指定则会读取全部数据autoTrimtrue会对头、读取数据等进行自动trimuse1904windowingfalseexcel中时间是存储1900年起的一个双精度浮点数但是有时候默认开始日期是1904所以设置这个值改成默认1904年开始useScientificFormatfalse数字转文本的时候在较大的数值的是否是否采用科学计数法needHeadtrue是否需要写入头到exceluseDefaultStyletrue是否使用默认的样式automaticMergeHeadtrue自动合并头头中相同的字段上下左右都会去尝试匹配excludeColumnIndexes空需要排除对象中的index的数据excludeColumnFieldNames空需要排除对象中的字段的数据includeColumnIndexes空只要导出对象中的index的数据includeColumnFieldNames空只要导出对象中的字段的数据 WriteWorkbook 设置方法如下找不到参数的看下通用参数里面是否存在 EasyExcel.write(fileName, DemoData.class)// 在 write 方法之后 在 sheet方法之前都是设置 WriteWorkbook 的参数.sheet(模板).doWrite(() - {// 分页查询数据return data();});WriteWorkbook 方法 public static ExcelWriterBuilder write() public static ExcelWriterBuilder write(File file) public static ExcelWriterBuilder write(String pathName) public static ExcelWriterBuilder write(String pathName, Class head) public static ExcelWriterBuilder write(OutputStream outputStream) public static ExcelWriterBuilder write(OutputStream outputStream, Class head) // 参数说明 // file 创建的excel文件路径路径需包含文件名 // pathName 创建的excel文件路径路径需包含文件名 // outputStream 创建的excel文件的输出流路径需包含文件名 // head excel文件的行头实体类标题栏 WriteWorkbook 参数 名称默认值描述excelType空当前excel的类型,支持XLS、XLSX、CSVoutputStream空与file二选一。写入文件的流file空与outputStream二选一。写入的文件templateInputStream空模板的文件流templateFile空模板文件charsetCharset#defaultCharset只有csv文件有用写入文件的时候使用的编码autoCloseStreamtrue自动关闭写入的流。password空读取文件的密码inMemoryfalse是否在内存处理默认会生成临时文件以节约内存。内存模式效率会更好但是容易OOMwriteExcelOnExceptionfalse写入过程中抛出异常了是否尝试把数据写入到excel WriteSheet 设置方法如下找不到参数的看下通用参数里面是否存在 EasyExcel.write(fileName, DemoData.class).sheet(模板)// 在 sheet 方法之后 在 doWrite方法之前都是设置WriteSheet的参数.doWrite(() - {// 分页查询数据return data();});参数说明 名称默认值描述sheetNo0需要写入的编码sheetName空需要些的Sheet名称默认同sheetNo WriteTable 设置方法如下找不到参数的看下通用参数里面是否存在 EasyExcel.write(fileName, DemoData.class).sheet(模板).table()// 在 table 方法之后 在 doWrite方法之前都是设置WriteTable的参数.doWrite(() - {// 分页查询数据return data();});参数说明 名称默认值描述tableNo0需要写入的编码 代码示例 创建 Excel 文件 1配置实体类 在 EasyExcel 中通过 java 代码生成或者解析 Excel 文件很简单。不需要创建繁琐的表头 创建数据行的实体类 ContractProductVo 在实体类上通过注解配置 标题行高列宽等数据 ExcelProperty在创建Excel的时候自动的读取实体类中的注解配置生成表头 示例代码如下 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.util.Date;/*** Excel 实体类*/ Data ContentRowHeight(20) //数据行高数 HeadRowHeight(20) //表头高度 ColumnWidth(15) //列宽 public class UserExcelVo {ExcelProperty(用户名)private String username;ExcelProperty(密码)private String password;ExcelProperty(电话)private String phone;ExcelProperty(创建时间)DateTimeFormat(yyyy-MM-dd)private Date createTime; }2Excel 文件的生成和下载 在 java 代码中通过 EasyExcel 工具类完成 excel 文件的生成和下载 示例代码如下 /*** 使用 EasyExcel完成 excel 的生成和下载* 1、数据查询* 2、设置下载信息* 3、调用EasyExcel的工具类完成生成下载*/RequestMapping(/printEasyExcel)public void printEasyExcel(String inputDate) throws IOException {//1、数据查询ListContractProductVo list contractService.findByShipTime(inputDate%);//2、设置下载信息response.setContentType(application/vnd.ms-excel); //下载excelresponse.setCharacterEncoding(utf-8);String fileName URLEncoder.encode(出货表, UTF-8);response.setHeader(Content-disposition, attachment;filename fileName .xlsx);//3、调用EasyExcel的工具类完成生成下载EasyExcel.write(response.getOutputStream()).head(ContractProductVo.class) //设置表头.sheet(test127) //指定页名称.doWrite(list); //设置数据}模板打印 对于复杂样式的 Excel 文件创建EasyExcel 支持模板打印。以一个 Excel 文件作为模板自动的进行数据的拓展和填充。 定义模板 ( 配置好了所有的样式 )配置实体类表头java代码填充模板并下载 Excel 1定义模板 在 easyExcel 中支持两个模板语言语法{map中的key} 传入一个 map 集合往往是用于处理非list集合的数据 语法{.对象中的属性名} 传入一个 list 集合会自动的循环 list 集合构造数据列表 2填充模板并下载 Excel 模板文件 /*** 模板打印**/RequestMapping(/printTemplate)public void printTemplate(String inputDate) throws IOException {//1.准备数据ListContractProductVo list contractService.findByShipTime(inputDate%);Map map new HashMap();inputDate inputDate.replaceAll(-0,-).replaceAll(-,年);map.put(time,inputDate);map.put(title1,客户名称);//2.设置下载信息response.setContentType(application/vnd.ms-excel); //下载excelresponse.setCharacterEncoding(utf-8);String fileName URLEncoder.encode(出货表, UTF-8);response.setHeader(Content-disposition, attachment;filename fileName .xlsx);//3.加载excel模板String path session.getServletContext().getRealPath(/)/make/tOUTPRODUCT.xlsx;//4.创建EasyExcel的excelWtire对象( 用于数据填充)ExcelWriter excelWriter EasyExcel.write(response.getOutputStream()).head(ContractProductVo.class) //设置表头.withTemplate(path) //加载模板.build();//获取sheet对象WriteSheet sheet EasyExcel.writerSheet().build();//5.调用方法完成填充map数据excelWriter.fill(map,sheet);//6.调用方法完成填充list数据excelWriter.fill(list,sheet);//7.属性资源完成下载excelWriter.finish(); //下载excel文件释放内存资源} 解析 Excel 文件 1配置实体类 创建实体类对象用于解析封装对象配置表头注解EasyExcel 自动的根据注解配置获取文件中对应行的内容 ExcelIgnoreUnannotated忽略默认表头配置ExcelPropertym配置表头 import cn.itcast.domain.BaseEntity; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty;import java.io.Serializable; import java.util.List;/*** 合同下货物的实体类* 通过EasyExcel完成文件解析在实体类上通过注解配置表头* 如果实体类中的属性未配置ExcelProperty* 默认按照属性的编写顺序从excel中获取数据* 默认情况下为配置注解的属性会影响数据封装* 在类上配置一个注解忽略未配置注解的属性*/ ExcelIgnoreUnannotated Data public class ContractProduct extends BaseEntity implements Serializable {private String id;ExcelProperty(货号)private String productNo; //货号private String productImage; //图片路径ExcelProperty(货物描述)private String productDesc; //货描ExcelProperty(装率)private String loadingRate; //报运装率 1/3ExcelProperty(箱数)private Integer boxNum; //报运箱数 100ExcelProperty(包装单位)private String packingUnit; //包装单位PCS/SETS 支/箱ExcelProperty(数量)private Integer cnumber; //数量 300private Integer outNumber; //报运出货数量 200private Integer finished; //报运是否完成 noExcelProperty(要求)private String productRequest; //要求ExcelProperty(单价)private Double price; //单价private Double amount; //总金额冗余private Integer orderNo; //排序号private String contractId; //合同号ExcelProperty(生产厂家)private String factoryName; //厂家名称冗余字段private String factoryId;private ListExtCproduct extCproducts ; //货物和附件一对多 } 2解析 Excel 文件 修改 ContractProductController 对象完成 EasyExcel 的文件批量上传 /*** 通过 EasyExcel 完成文件上传解析批量货物保存* 参数购销合同id* 参数上传的excel文件对象*/RequestMapping(/import)public String importExcel(String contractId, MultipartFile file) throws Exception {ListContractProduct list EasyExcel.read(file.getInputStream()).head(ContractProduct.class) //设置表头将数据转化为目标对象.sheet(0) //读取第一页数据.doReadSync(); //解析excel获取所有的数据for (ContractProduct contractProduct : list) {System.out.println(contractProduct);contractProduct.setContractId(contractId);contractProduct.setCompanyId(getLoginCompanyId());contractProduct.setCompanyName(getLoginCompanyName());}contractProductService.saveAll(list);return redirect:/cargo/contractProduct/list.do?contractIdcontractId;}拓展 csv 读写的支持 在3.0.0-beta1版本开始支持读的时候会自动判断。写的时候指定 excelType 就行。 EasyExcel.write(fileName, DemoData.class)// 指定导出类型为csv.excelType(ExcelTypeEnum.CSV).sheet(模板).doWrite(() - {// 分页查询数据return data();});
http://www.dnsts.com.cn/news/163576.html

相关文章:

  • 修改网站logo惠州网站搭建
  • 网站被黑wordpress qq分享插件
  • 做旅游网站的好处电商网站建设公司怎么样
  • 网站建设的公司排名注册建设通网站首页
  • 文化馆网站建设情况ui素材网站
  • wordpress免费建站英文手机网站模板
  • 给公司做网站的公司做搬运的话哪个网站好
  • 平面设计培训怎么样网站优化毕业设计
  • 尉氏网站建设网站 备案规定
  • 网站之前没备案专业做淘宝网站公司吗
  • 丹东网站开发公司芜湖做网站多少钱
  • 教你学做窗帘的网站大连网站建设佳熙科技
  • 做书评的网站有哪些wordpress图片0x0
  • 无水印效果图网站网红营销的弊端
  • 自己做网站接入微信和支付宝郑州网站建设开发公司
  • 网站制作流程分为哪三步梵客联盟
  • rdm响应式网站开发网站建设的费用和预算
  • 东莞知名网站优化公司网站备案手机号码
  • 英文网站备案自考本科需要什么条件
  • 网站建设公司logoui网页设计成都培训
  • 手机网站 怎么开发模板网站的缺陷
  • 龙华做网站哪家好广西建设厅官网证件查询
  • 用vs2013做网站教程宿迁seo
  • 网站建设案例要多少钱网站建设都需要什么文案
  • 小说网站静态模板企业网站如何seo
  • 需要建设一个什么样的网站北京建设网办事大厅
  • 手机网站友情链接怎么做织梦怎么查看网站点击
  • 手机搭建网站软件下载领卷网站如何做代理
  • 企业网站硬件建设方案网站主题有哪些内容
  • 网站需求建设书封面设计网站