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

ui设计的细分研究方向包含哪几项网站优化怎么学

ui设计的细分研究方向包含哪几项,网站优化怎么学,外贸工厂 网站建设,江苏省内网站建设EasyExcel是一款处理excel的工具类,主要特点如下(官方): 特点 高性能读写:FastExcel 专注于性能优化,能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库,它能显著降低内存占用。…

EasyExcel是一款处理excel的工具类,主要特点如下(官方):

特点

  • 高性能读写:FastExcel 专注于性能优化,能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库,它能显著降低内存占用。
  • 简单易用:该库提供了简洁直观的 API,使得开发者可以轻松集成到项目中,无论是简单的 Excel 操作还是复杂的数据处理都能快速上手。
  • 流式操作:FastExcel 支持流式读取,将一次性加载大量数据的问题降到最低。这种设计方式在处理数十万甚至上百万行的数据时尤为重要。

我自己实践之后的感受如下:

  • 性能比较好,底层使用SXSSF,在大数据的情况下,会先往硬盘中插入,加快速度。(SXSSF 通过将数据写入磁盘而不是全部保留在内存中,来减少内存的使用。这种 “流式” 写入方式特别适合处理那些可能导致传统内存处理方式崩溃的大型 CSV 文件。SXSSF 可以在写入数据的同时,将数据保存在一个临时的文件中,这样即使处理非常大的数据集,内存的使用也会保持在可控范围内。)
  • 支持注解,可以在每个字段属性上添加注解,可以设置表格的表头/颜色/字体/合并单元格等属性。
  • 支持策略,针对复杂的表格,支持注入策略,针对表格进行各种加工。
  • 支持excel转pdf(仅支持xlsx,版本为1.0.0)

实践

引入依赖


<dependency><groupId>cn.idev.excel</groupId><artifactId>fastexcel</artifactId><version>1.1.0</version>
</dependency>
1.表头支持注解方式生成

比如,下方的示例:创建一个绿色背景,加边框的表头
在这里插入图片描述
代码的话可以直接这样写:
新增一个订单类:

@Data
// 表头背景设置
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 17)
public class Order {@ExcelProperty("订单号")private String orderId;@ExcelProperty("渠道")private String searchChannel;@ExcelProperty("创建时间")private String createTime;@ExcelProperty("乘客姓名")private String name;@ExcelProperty("证件号")private String idCard;
}

创建表格


/*** 合并单元格* <p>* 1. 创建excel对应的实体对象 参照{@link DemoData} {@link DemoMergeData}* <p>* 2. 创建一个merge策略 并注册* <p>* 3. 直接写即可** @since 2.2.0-beta1*/
@Test
public void mergeOrderWrite() {//使用策略合并单元格try (FileOutputStream excel = new FileOutputStream("mergeOrderWrite.xlsx");BufferedOutputStream bos = new BufferedOutputStream(excel)) {// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭EasyExcel.write(bos, Order.class).sheet("模板").doWrite(buildData());System.out.println("导出完成");} catch (IOException e) {System.out.println("导出失败:" + e.getMessage());} catch (Exception e) {throw new RuntimeException(e);}
}//初始化数据
private List<Order> buildData() {List<Order> list = new ArrayList<>();for (int i = 0; i < 100; i++) {for (int j = 0; j < 2; j++) {Order user = new Order();user.setOrderId("orderId_" + i);user.setSearchChannel("searchChannel_" + i);user.setCreateTime(DateTimeUtil.nowString());user.setName("name_" + j);user.setIdCard("idCard_" + j);list.add(user);}}Order user1 = new Order();user1.setOrderId("orderId_99");user1.setSearchChannel("searchChannel_99");user1.setCreateTime(DateTimeUtil.nowString());user1.setName("name_a");user1.setIdCard("idCard_a");list.add(user1);return list;
}

上面代码执行之后,即可以生成效果图中的表格数据

2.通过添加策略,来支持复杂的表格处理

比如我们要处理一个表格,里面的数据涉及到动态合并单元格。需要将相邻的相同订单号合并到一起
在这里插入图片描述
支持添加策略实现:
思路:遍历每个row,如果两个orderid一样,则合并

@Slf4j
public class LoopOrderMergeStrategy implements RowWriteHandler {/*** 订单号*/private String orderId;/*** 当前订单号起始坐标*/private Integer indexStart;/*** 合并策略,订单号和创建时间合并** @author zhouxy* @date 2025/4/3 17:27*/public void afterRowDispose(RowWriteHandlerContext context) {log.info("进来,,,{},{}", context.getRow().getRowNum(), context.getRelativeRowIndex());//遍历每个row,如果两个orderid一样,则合并//这里是获取每一行数据Cell cell = context.getRow().getCell(0);String currentOrderId = cell.getStringCellValue();if (Strings.isEmpty(this.orderId)) {this.orderId = currentOrderId;indexStart = context.getRowIndex();} else if (Objects.equals(this.orderId, currentOrderId)) {//合并单元格//订单号CellRangeAddress orderCellRangeAddress = new CellRangeAddress(indexStart,context.getRowIndex(),cell.getColumnIndex(),cell.getColumnIndex());context.getWriteSheetHolder().getSheet().addMergedRegionUnsafe(orderCellRangeAddress);//渠道Cell searchChannelCell = context.getRow().getCell(1);CellRangeAddress searchChannelCellRangeAddress = new CellRangeAddress(indexStart,context.getRowIndex(),searchChannelCell.getColumnIndex(),searchChannelCell.getColumnIndex());context.getWriteSheetHolder().getSheet().addMergedRegionUnsafe(searchChannelCellRangeAddress);//创建时间Cell createtimeCell = context.getRow().getCell(2);CellRangeAddress createTimeCellRangeAddress = new CellRangeAddress(indexStart,context.getRowIndex(),createtimeCell.getColumnIndex(),createtimeCell.getColumnIndex());context.getWriteSheetHolder().getSheet().addMergedRegionUnsafe(createTimeCellRangeAddress);} else if (!Objects.equals(this.orderId, currentOrderId)) {this.orderId = currentOrderId;indexStart = context.getRowIndex();}}}

生成表格的时候,将该策略设置进去


/*** 合并单元格* <p>* 1. 创建excel对应的实体对象 参照{@link DemoData} {@link DemoMergeData}* <p>* 2. 创建一个merge策略 并注册* <p>* 3. 直接写即可** @since 2.2.0-beta1*/
@Test
public void mergeOrderWrite() {//使用策略合并单元格try (FileOutputStream excel = new FileOutputStream("mergeOrderWrite.xlsx");BufferedOutputStream bos = new BufferedOutputStream(excel)) {LoopOrderMergeStrategy loopMergeStrategy = new LoopOrderMergeStrategy();// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭EasyExcel.write(bos, Order.class).registerWriteHandler(loopMergeStrategy).sheet("模板").doWrite(buildData());System.out.println("导出完成");} catch (IOException e) {System.out.println("导出失败:" + e.getMessage());} catch (Exception e) {throw new RuntimeException(e);}
}
3.支持excel转pdf,但是只有1.0.0版本有,新版本去掉了。
   @Testpublic void excelToPdf() {FastExcel.convertToPdf(new File("excel1.xlsx"),new File("pdfFile"),null,null);}
4.性能

相同数据生成用时比较:ExsyExcel > SXSSF > HSSF. 但是HSSF最大行数为65565行,再大就超出范围报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HSSF可写入行数
在这里插入图片描述
easyexcel和SXSSF可写入行数
在这里插入图片描述

综合比较用时的话,,EasyExcel和SX SSF的用时差不多,HSSF的用时相当于前两者的三分之一。但是HSSF数据量支持较小,但是综合下来的话,从用时,代码简洁度来说,建议使用EasyExcel

其他功能可以看官方的github,里面有很多示例。比如支持转图片,根据模板写入excel等。

http://www.dtcms.com/wzjs/835101.html

相关文章:

  • 网站手绘教程我自己做个网站怎么做
  • 网站建设包括的内容网站开发顶岗报告
  • 广州网站制作公司 番禺建设银行电脑版官方网站
  • 手机网站栏目结构图如何利用js来做网站表单
  • 专业的企业智能建站价格便宜wordpress哪个版本php
  • 和京东一样做电子产品的网站全网营销网络推广
  • 网站建设多少钱裙九里徐州网站开发
  • 北京网站建设认知培训怎么样网页设计
  • 白云做网站公司Wordpress上传万网空间
  • 如皋网站制作网络推广方案模板
  • 山东网站定制设计东莞房价走势
  • 百度网盘如何获得2t免费空间seo标题关键词怎么写
  • 电视网站后台管理系统漏洞自己做的网站怎么嵌入高德地图
  • seo网站推广简历企业培训网站
  • 宜宾网站建设哪家好dw软件网站建设教程视频
  • 广西网站建设seo优化最新新闻事件今天300字
  • 安徽元鼎建设工程网站wordpress七牛云图床插件
  • 山东建设执业资格注册中心网站电子商务网站建设的一般
  • 网站搭建软件wordpress Null
  • 上海市建设工程定额官方网站wordpress docker安装目录
  • 做任务领q币网站seo关键词排名
  • wordpress外贸建站主题苏州企业商务网站建设
  • 分类目录网站程序广东省城乡建设厅投诉网站首页
  • 搭建网站用什么框架网站建设的大作业代码
  • 安装网站系统wordpress官网登录
  • 黑彩网站自己可以做么上海青浦做网站公司
  • 网站浮动窗口如何做windows8风格网站模板
  • 外国网站上做Tasklogo查询有没有注册过
  • 安顺市网站建设做视频上传到网站怎么赚钱
  • 网站显示建设中wap网站分享到微信