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

怎么样给网站的服务器续费做网站服务

怎么样给网站的服务器续费,做网站服务,创意旅行社wordpress,兰州网站优化排名需求#xff1a;需要在导出excel时合并指定的单元格 ruoyi excel 项目基于若伊框架二次开发#xff0c;本着能用现成的就不自己写的原则#xff0c;先是尝试了Excel注解中needMerge属性 /*** 是否需要纵向合并单元格,应对需求:含有list集合单元格)*/public boolean needMer… 需求需要在导出excel时合并指定的单元格 ruoyi excel 项目基于若伊框架二次开发本着能用现成的就不自己写的原则先是尝试了Excel注解中needMerge属性 /*** 是否需要纵向合并单元格,应对需求:含有list集合单元格)*/public boolean needMerge() default false; 查了一圈别人的使用大致是需要定义一个List集合集合元素为对象对象中的属性标注Excel注解并表明name属性 照葫芦画瓢 Getter Setter ToString public class CutterControlVO {/** 主键 */private Long id;/** 工厂编码 */Excel(name 工厂编码,needMerge true)private String factoryCode;/** 产线编码 */Excel(name 产线编码,needMerge true)private String productionLineCode;/** 设备编号 */Excel(name 设备编号,needMerge true)private String deviceNumber;/** 设备名称 */Excel(name 设备名称,needMerge true)private String deviceName;Excel(name 检测刀具编码,needMerge true)private String cutterCode;/** 换刀时间 */JsonFormat(timezoneGMT8, patternyyyy-MM-dd HH:mm:ss)DateTimeFormat(patternyyyy-MM-dd HH:mm:ss)Excel(name 换刀时间,dateFormat yyyy-MM-dd HH:mm:ss,needMerge true)private Date cutterChangeTime;/** 上刀数 */Excel(name 上刀数,needMerge true)private Integer upperKnifeNumber;/** 下刀数 */Excel(name 下刀数,needMerge true)private Integer lowerKnifeNumber;Excel(name 更换人员,needMerge true)private String modifyUser;/** 备注 */Excel(name 备注,needMerge true)private String remark;Excel(name 换刀位置)private ListCutterVO cutterChangePosition;Excel(name 累计分切米数)private ListCutterVO accumulatedCuttingMeters;} Getter Setter ToString public class CutterVO {Excel(name 上刀左)private Integer upperKnifeLeft;Excel(name 上刀中)private Integer upperKnifeCenter;Excel(name 上刀右)private Integer upperKnifeRight;Excel(name 下刀左)private Integer lowerKnifeLeft;Excel(name 下刀中)private Integer lowerKnifeCenter;Excel(name 下刀右)private Integer lowerKnifeRight; } PostMapping(/export) public void export(HttpServletResponse response) throws Exception{ListCutterControl cutterControlList cutterControlService.getCutterControlList();//设置导出的数据表格式ListCutterControlVO cutterControlVOList new ArrayList();CutterControlVO cutterControlVO null;for (CutterControl cutterControl : cutterControlList) {cutterControlVO new CutterControlVO();CutterVO cutterPosition new CutterVO();cutterPosition.setUpperKnifeLeft(cutterControl.getCutterChangePositionUpperKnifeLeft());cutterPosition.setUpperKnifeCenter(cutterControl.getCutterChangePositionUpperKnifeCenter());cutterPosition.setUpperKnifeRight(cutterControl.getCutterChangePositionUpperKnifeRight());cutterPosition.setLowerKnifeLeft(cutterControl.getCutterChangePositionLowerKnifeLeft());cutterPosition.setLowerKnifeCenter(cutterControl.getCutterChangePositionLowerKnifeCenter());cutterPosition.setLowerKnifeRight(cutterControl.getCutterChangePositionLowerKnifeRight());CutterVO accumulatedCuttingMeters new CutterVO();accumulatedCuttingMeters.setUpperKnifeLeft(cutterControl.getAccumulatedCuttingMetersUpperKnifeLeft());accumulatedCuttingMeters.setUpperKnifeCenter(cutterControl.getAccumulatedCuttingMetersUpperKnifeCenter());accumulatedCuttingMeters.setUpperKnifeRight(cutterControl.getAccumulatedCuttingMetersUpperKnifeRight());accumulatedCuttingMeters.setLowerKnifeLeft(cutterControl.getAccumulatedCuttingMetersLowerKnifeLeft());accumulatedCuttingMeters.setLowerKnifeCenter(cutterControl.getAccumulatedCuttingMetersLowerKnifeCenter());accumulatedCuttingMeters.setLowerKnifeRight(cutterControl.getAccumulatedCuttingMetersLowerKnifeRight());BeanUtils.copyProperties(cutterControl,cutterControlVO);cutterControlVO.setCutterChangePosition(Arrays.asList(cutterPosition));cutterControlVO.setAccumulatedCuttingMeters(Arrays.asList(accumulatedCuttingMeters));cutterControlVOList.add(cutterControlVO);}ExcelUtilCutterControlVO util new ExcelUtilCutterControlVO(CutterControlVO.class);util.exportExcel(response,cutterControlVOList,切刀管控台账数据); } 查看导出效果 黑人问号脸 突然想到别人都是采用的是一个List集合于是我注释了一个List此时效果如下 可以看到一个List效果是正常显示的数据获取和显示也是正常的。 若伊使用的Excel导出工具类底层采用apache poi 只能导出简单的excel表格涉及复杂excel表格或者需要自定义表格时就比较难操作 使用阿里的easyExcel来实现复杂excel表格的导出 easyExcel 首先引入POM依赖 dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion2.2.7/version/dependency 1、不合并单元格的写法 实体类 Getter Setter public class CutterControl {/** 主键 */ExcelIgnoreprivate Long id;/** 工厂编码 */ExcelProperty(value 工厂编码)private String factoryCode;/** 产线编码 */ExcelProperty(value 产线编码)private String productionLineCode;/** 设备编号 */ExcelProperty(value 设备编号)private String deviceNumber;/** 设备名称 */ExcelProperty(value 设备名称)private String deviceName;ExcelProperty(value 检测刀具编码)private String cutterCode;ExcelProperty(value 上刀左)private Integer cutterChangePositionUpperKnifeLeft;ExcelProperty(value 上刀中)private Integer cutterChangePositionUpperKnifeCenter;ExcelProperty(value 上刀右)private Integer cutterChangePositionUpperKnifeRight;ExcelProperty(value 下刀左)private Integer cutterChangePositionLowerKnifeLeft;ExcelProperty(value 下刀中)private Integer cutterChangePositionLowerKnifeCenter;ExcelProperty(value 下刀右)private Integer cutterChangePositionLowerKnifeRight;ExcelProperty(value 上刀左)private Integer accumulatedCuttingMetersUpperKnifeLeft;ExcelProperty(value 上刀中)private Integer accumulatedCuttingMetersUpperKnifeCenter;ExcelProperty(value 上刀右)private Integer accumulatedCuttingMetersUpperKnifeRight;ExcelProperty(value 下刀左)private Integer accumulatedCuttingMetersLowerKnifeLeft;ExcelProperty(value 下刀中)private Integer accumulatedCuttingMetersLowerKnifeCenter;ExcelProperty(value 下刀右)private Integer accumulatedCuttingMetersLowerKnifeRight;/** 换刀时间 */JsonFormat(timezoneGMT8, patternyyyy-MM-dd HH:mm:ss)DateTimeFormat(patternyyyy-MM-dd HH:mm:ss)ExcelProperty(value 换刀时间)ColumnWidth(20)private Date cutterChangeTime;/** 上刀数 */ExcelProperty(value 上刀数)private Integer upperKnifeNumber;/** 下刀数 */ExcelProperty(value 下刀数)private Integer lowerKnifeNumber;ExcelProperty(value 更换人员)private String modifyUser;/** 备注 */ExcelProperty(value 备注)private String remark;} ExcelIgnore 设置表格忽略该属性 ColumnWidth(20) 设置列宽 controller代码 PostMapping(/export)public void export(HttpServletResponse response) throws Exception{ListCutterControl cutterControlList cutterControlService.getCutterControlList();String fileName System.getProperty(user.dir) / System.currentTimeMillis() .xlsx;// 构建ExcelWriterExcelWriter excelWriter EasyExcel.write(fileName).excelType(ExcelTypeEnum.XLSX).build();// 构建sheetWriteSheet writeSheet EasyExcel.writerSheet(切刀管控台账数据).head(CutterControl.class).build();// 写sheetexcelWriter.write(cutterControlList, writeSheet);excelWriter.finish();} 结果 2、自定义列合并策略 参考eastExcel文档可知在实体类上添加属性即可实现我想要的效果 写Excel | Easy Excel Getter Setter EqualsAndHashCode public class ComplexHeadData {ExcelProperty({主标题, 字符串标题})private String string;ExcelProperty({主标题, 日期标题})private Date date;ExcelProperty({主标题, 数字标题})private Double doubleData; } 再次照葫芦画瓢 Getter Setter public class CutterControl {/** 主键 */ExcelIgnoreprivate Long id;/** 工厂编码 */ExcelProperty(value 工厂编码)private String factoryCode;/** 产线编码 */ExcelProperty(value 产线编码)private String productionLineCode;/** 设备编号 */ExcelProperty(value 设备编号)private String deviceNumber;/** 设备名称 */ExcelProperty(value 设备名称)private String deviceName;ExcelProperty(value 检测刀具编码)private String cutterCode;ExcelProperty({换刀位置, 上刀左})private Integer cutterChangePositionUpperKnifeLeft;ExcelProperty({换刀位置, 上刀中})private Integer cutterChangePositionUpperKnifeCenter;ExcelProperty({换刀位置, 上刀右})private Integer cutterChangePositionUpperKnifeRight;ExcelProperty({换刀位置, 下刀左})private Integer cutterChangePositionLowerKnifeLeft;ExcelProperty({换刀位置, 下刀中})private Integer cutterChangePositionLowerKnifeCenter;ExcelProperty({换刀位置, 下刀右})private Integer cutterChangePositionLowerKnifeRight;ExcelProperty({累计分切米数, 上刀左})private Integer accumulatedCuttingMetersUpperKnifeLeft;ExcelProperty({累计分切米数, 上刀中})private Integer accumulatedCuttingMetersUpperKnifeCenter;ExcelProperty({累计分切米数, 上刀右})private Integer accumulatedCuttingMetersUpperKnifeRight;ExcelProperty({累计分切米数, 下刀左})private Integer accumulatedCuttingMetersLowerKnifeLeft;ExcelProperty({累计分切米数, 下刀中})private Integer accumulatedCuttingMetersLowerKnifeCenter;ExcelProperty({累计分切米数, 下刀右})private Integer accumulatedCuttingMetersLowerKnifeRight;/** 换刀时间 */JsonFormat(timezoneGMT8, patternyyyy-MM-dd HH:mm:ss)DateTimeFormat(patternyyyy-MM-dd HH:mm:ss)ExcelProperty(value 换刀时间)ColumnWidth(20)private Date cutterChangeTime;/** 上刀数 */ExcelProperty(value 上刀数)private Integer upperKnifeNumber;/** 下刀数 */ExcelProperty(value 下刀数)private Integer lowerKnifeNumber;ExcelProperty(value 更换人员)private String modifyUser;/** 备注 */ExcelProperty(value 备注)private String remark;} 其余不用修改 效果如下 若需要导出excel在浏览器修改Controller代码如下 GetMapping(/export)public void export(HttpServletResponse response) throws Exception{ListCutterControl cutterControlList cutterControlService.getCutterControlList();String fileName new String(切刀管控台账数据.xlsx);fileName URLEncoder.encode(fileName, UTF-8);response.setContentType(application/vnd.ms-excel);response.setCharacterEncoding(utf8);response.setHeader(Content-disposition, attachment;filename fileName );EasyExcel.write(response.getOutputStream(),CutterControl.class).sheet(切刀管控台账数据).doWrite(cutterControlList);} 3、自定义行合并策略 具体业务暂时用不到需要的可参考这个博客 https://www.cnblogs.com/monianxd/p/16359369.html 导入excel并处理同名列 由于实体类中存在excel列名重复的情况所以如果不进行处理会出现只有一个有值的情况最简单的处理方式如下 同名列添加所在位置的索引默认从0开始 Getter Setter public class CutterControl {/** 主键 */ExcelIgnoreprivate Long id;/** 工厂编码 */ExcelProperty(value 工厂编码)private String factoryCode;/** 产线编码 */ExcelProperty(value 产线编码)private String productionLineCode;/** 设备编号 */ExcelProperty(value 设备编号)private String deviceNumber;/** 设备名称 */ExcelProperty(value 设备名称)private String deviceName;ExcelProperty(value 检测刀具编码)private String cutterCode;ExcelProperty(value {换刀位置, 上刀左},index 5)private Integer cutterChangePositionUpperKnifeLeft;ExcelProperty(value {换刀位置, 上刀中},index 6)private Integer cutterChangePositionUpperKnifeCenter;ExcelProperty(value {换刀位置, 上刀右},index 7)private Integer cutterChangePositionUpperKnifeRight;ExcelProperty(value {换刀位置, 下刀左},index 8)private Integer cutterChangePositionLowerKnifeLeft;ExcelProperty(value {换刀位置, 下刀中},index 9)private Integer cutterChangePositionLowerKnifeCenter;ExcelProperty(value {换刀位置, 下刀右},index 10)private Integer cutterChangePositionLowerKnifeRight;ExcelProperty(value {累计分切米数, 上刀左},index 11)private Integer accumulatedCuttingMetersUpperKnifeLeft;ExcelProperty(value {累计分切米数, 上刀中},index 12)private Integer accumulatedCuttingMetersUpperKnifeCenter;ExcelProperty(value {累计分切米数, 上刀右},index 13)private Integer accumulatedCuttingMetersUpperKnifeRight;ExcelProperty(value {累计分切米数, 下刀左},index 14)private Integer accumulatedCuttingMetersLowerKnifeLeft;ExcelProperty(value {累计分切米数, 下刀中},index 15)private Integer accumulatedCuttingMetersLowerKnifeCenter;ExcelProperty(value {累计分切米数, 下刀右},index 16)private Integer accumulatedCuttingMetersLowerKnifeRight;/** 换刀时间 */JsonFormat(timezoneGMT8, patternyyyy-MM-dd HH:mm:ss)DateTimeFormat(patternyyyy-MM-dd HH:mm:ss)ExcelProperty(value 换刀时间)ColumnWidth(20)private Date cutterChangeTime;/** 上刀数 */ExcelProperty(value 上刀数)private Integer upperKnifeNumber;/** 下刀数 */ExcelProperty(value 下刀数)private Integer lowerKnifeNumber;ExcelProperty(value 更换人员)private String modifyUser;/** 备注 */ExcelProperty(value 备注)private String remark;} 导入Controller代码 PostMapping(/import)public R importData(RequestParam(value file) MultipartFile file) throws IOException {String fileName file.getOriginalFilename();String suffixName fileName.substring(fileName.lastIndexOf(.));if (!(suffixName.equals(.xlsx))) {return R.fail(请上传xlsx格式文件);}EasyExcel.read(file.getInputStream(), CutterControl.class, new ReadListenerCutterControl() {/*** 单次缓存的数据量*/public static final int BATCH_COUNT 100;/***临时存储*/private ListCutterControl cachedDataList ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);Overridepublic void invoke(CutterControl data, AnalysisContext context) {cachedDataList.add(data);if (cachedDataList.size() BATCH_COUNT) {saveData();// 存储完成清理 listcachedDataList ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);}}Overridepublic void doAfterAllAnalysed(AnalysisContext context) {saveData();}/*** 加上存储数据库*/private void saveData() {cutterControlService.batchInsertCutterControl(cachedDataList);log.info({}条数据开始存储数据库, cachedDataList.size());log.info(存储数据库成功);}}).sheet().doRead();return R.ok();}
http://www.zqtcl.cn/news/605494/

相关文章:

  • 做网站找什么公司工作网站开发思维导图内容
  • 有人知道做网站吗?wordpress多站点cdn
  • 网站风格特点大型外包公司有哪些
  • 如何网站seo用asp做网站有哪控件
  • 网站建设需要哪些成本wordpress商城建站教程
  • 做网络的网站很重要吗网站认证费用
  • flash网站项目背景网页截图快捷键可拉动
  • 郑州企业建设网站北京企业网站模板建站开发
  • 宣传旅游网站建设的观点是什么公众号怎么推广和引流
  • 企业网站制作多少钱山西网络营销方案
  • 焦作住房和城乡建设局网站旅行网站模板
  • 男做基视频网站国家重点高新技术企业名单
  • 公司官方网站开发网站建设电子商务
  • seo网站优化系统搜索引擎优化排名案例
  • 郑州网站建设工作室网站建设全流程 知乎
  • 如何利用源码做网站外贸网站制作推广
  • 国内做网站哪家公司好免费查找资料的网站
  • 自己做的网站百度搜不到搭建网站seo
  • 奇墙网站建设高端网站建设公司联系电话
  • 宁波那家公司做网站好中企动力科技股份有限公司招聘
  • 水果网站推广网站首页静态好还是动态好
  • iis网站属性小程序源码无需服务器
  • 景区网站建设材料代运营有哪些套路坑
  • 六安电商网站建设哪家好有关做美食的网站
  • 卸载wordpress插件网店seo关键词
  • 金山网站制作赤城seo网站优化排名
  • 提供坪山网站建设深圳商城网站哪家做的好
  • 有什么网站可以帮人做模具吗热搜榜百度一下你就知道
  • 深圳网站优化技巧邹城住房城乡建设部网站
  • 小型企业网站建站桂林市中考信息网官网