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

青龙网站建设网络营销的公司有哪些

青龙网站建设,网络营销的公司有哪些,专线可以做网站,广州做网站的公司有哪些背景 某公司导出的一个Excel 其中有三列数据 是数字 但是导出后 实际上格式为 数值形式的字符串 客户要求这三列的格式改为 数值格式 且千分位分隔 保留两位小数 分析原因 先看导出用到了什么工具 查看源码发现 导出 使用了 EasyExcel 立马想到 一般情况下导出实体的字段类…

背景

某公司导出的一个Excel 其中有三列数据 是数字 但是导出后 实际上格式为 数值形式的字符串
客户要求这三列的格式改为 数值格式 且千分位分隔 保留两位小数

在这里插入图片描述

分析原因

先看导出用到了什么工具 查看源码发现 导出 使用了 EasyExcel
在这里插入图片描述

立马想到 一般情况下导出实体的字段类型可能是String 才会导致 数字类型 在Excel中是 数值类型的字符串

去找导出实体对象 查看相应字段类型
在这里插入图片描述
很遗憾 并不是想象中的一般情况
这里的字段类型都是BigDecimal 按道理来说 导出的 数字 应该就是数字类型的

深入看了下代码 发现excel写入的过程涉及到不同列的权限显示问题 一些数据是 动态写入的 不是EasyExcel的简单通过对象导出
考虑到使用到的EasyExcel版本比较老 且需要设置 千分位 保留两位小数等 格式
在这里插入图片描述
就不再研究1.1.2版本的EasyExcel 了 (如果有感兴趣的或者研究过 EasyExcel实现这种功能的朋友 还请在评论区讨论下)

确定解决方案

既然Excel已经生成好了 那么就在已经生成好的Excel上再次处理 使用POI (很显然这种方式很不友好 消耗内存 浪费更多的时间去重新遍历Excel 但是可以快速的解决目前遇到的问题)

在使用POI 进行处理的时候又遇到了一个坑

又遇到坑

如果直接获取对应cell之后 获取String类型的数字 然后转成double 再塞到cell里面 最后设置千分位 保留两位小数 会发现不生效

  // 单元格样式CellStyle cellStyle = wb.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));cellStyle.setAlignment(HorizontalAlignment.LEFT); //水平居左String cellValue13 = cellOrigin13.getStringCellValue();if(StringUtils.isNotEmpty(cellValue13)){double parseDouble = Double.parseDouble(cellValue13);cellNew13.setCellStyle(cellStyle);cellNew13.setCellValue(parseDouble);}
@PostMapping(value = "/export")
@ApiOperation(value = "导出")
public void exportForDistributor(@ParamHide CustomerBilling customerBilling, @ParamHide HttpServletRequest request, @ParamHide HttpServletResponse response) {customerBilling.setExportData(true);String filePath = customerBillingService.exportData(customerBilling, CustomerBillingData.class);// 处理Excel 格式开始if (StringUtils.isNotEmpty(filePath)) {XSSFWorkbook wb = returnWorkBookGivenFileHandle(filePath);if (wb == null) {log.error("returnWorkBookGivenFileHandle 方法获取的 XSSFWorkbook 对象wb 为空");return;}// 获取工作表1XSSFSheet sheet1 = wb.getSheet("1");// 获取总行数int rowNum = sheet1.getPhysicalNumberOfRows();// 单元格样式CellStyle cellStyle = wb.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));cellStyle.setAlignment(HorizontalAlignment.LEFT); //水平居左if(rowNum > 6){// 此时才有数据// 第七行开始    第 N O P列  开票金额 到款金额  本单余额  需要进行格式处理   13  14   15   注意处理空值for (int i = 6; i < rowNum; i++) {XSSFRow row = sheet1.getRow(i);XSSFCell cellOrigin13 = row.getCell(13);XSSFCell cellOrigin14 = row.getCell(14);XSSFCell cellOrigin15 = row.getCell(15);String cellValue13 = cellOrigin13.getStringCellValue();if(StringUtils.isNotEmpty(cellValue13)){double parseDouble = Double.parseDouble(cellValue13);XSSFCell cellNew13 = row.createCell(13);cellNew13.setCellStyle(cellStyle);cellNew13.setCellValue(parseDouble);}else {// 如果为空则创建空的空格 格式也做相同处理XSSFCell cellNew13 = row.createCell(13);cellNew13.setCellStyle(cellStyle);}String cellValue14 = cellOrigin14.getStringCellValue();if(StringUtils.isNotEmpty(cellValue14)){double parseDouble = Double.parseDouble(cellValue14);XSSFCell cellNew14 = row.createCell(14);cellNew14.setCellStyle(cellStyle);cellNew14.setCellValue(parseDouble);}else {// 如果为空则创建空的空格 格式也做相同处理XSSFCell cellNew14 = row.createCell(14);cellNew14.setCellStyle(cellStyle);}String cellValue15 = cellOrigin15.getStringCellValue();if(StringUtils.isNotEmpty(cellValue15)){double parseDouble = Double.parseDouble(cellValue15);XSSFCell cellNew15 = row.createCell(15);cellNew15.setCellStyle(cellStyle);cellNew15.setCellValue(parseDouble);}else {// 如果为空则创建空的空格 格式也做相同处理XSSFCell cellNew15 = row.createCell(15);cellNew15.setCellStyle(cellStyle);}saveExcel(wb,filePath);}}}// 处理Excel 格式结束CommonUtil.downloadJxlExcel(request, response, filePath, "客户对账单.xlsx");}/*** 得到一个已有的工作薄的POI对象** @return XSSFWorkbook 对象*/private XSSFWorkbook returnWorkBookGivenFileHandle(String filePath) {XSSFWorkbook wb = null;InputStream inputStream = null;try {File file = new File(filePath);// 获得inputStream对象try {inputStream = new FileInputStream(file);} catch (IOException e) {log.error("获取模板输入流为空 e", e);}if (inputStream != null) {wb = new XSSFWorkbook(inputStream);}} catch (Exception e) {log.error("获取Excel文件出错", e);} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException ignore) {}}}return wb;}/*** 保存工作薄** @param wb XSSFWorkbook对象*/private void saveExcel(XSSFWorkbook wb, String filePath) {FileOutputStream fileOut;try {fileOut = new FileOutputStream(filePath);wb.write(fileOut);fileOut.close();} catch (IOException e) {log.error("保存工作薄出错 e", e);}}

重处理Excel

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

相关文章:

  • 网站psd切图做响应式效果网络营销公司经营范围
  • 微网站ui多少钱学seo如何入门
  • 建网站用营业执照吗google下载
  • 模板网站可以优化吗整站外包优化公司
  • 做海报创客贴同类网站微信引流的十个方法
  • 广东企业网站seo报价推广代理平台登录
  • 互联网兼职做网站维护媒体发布平台
  • 公司做网站有意义么磁力搜索引擎
  • 宠物网站开发与实现seo优化几个关键词
  • 移动互联时代网站建设镇江关键字优化品牌
  • 红酒网站建设超级外链工具
  • iis网站发布教程服务器域名查询
  • 射阳网站建设腾讯广告投放推广平台
  • 金阊公司网站建设电话直通车推广怎么做
  • 用凡科网建设的网站和用dreamweaver建设的网站有什么不一样电商怎么做?如何从零开始学做电商赚钱
  • 政府职能网站建设潍坊网站关键词推广
  • 域名备案时网站名字线上营销策略都有哪些
  • 企业网站建设市场报价网页设计需要学什么
  • 网站建设服务器都有哪些营销型网站建设怎么做
  • 免费商城系统网站建设seo是什么意思 seo是什么职位
  • 西安网站建设电话站长之家端口扫描
  • 珠海代办工商营业执照北京seo排名技术
  • 道县找人做网站网络营销模式案例
  • 建设银行官方网站首页个人登录百度做网站
  • 网站制作多少钱一年怎么创建网页链接
  • 网站备案 更改ip营销型网站优化
  • 设计logo图片超级seo外链工具
  • 做网站图片大小不合适怎么调深圳优化公司找高粱seo服务
  • 从零开始建设网站百度app
  • 石河子市住房和城乡建设局网站近一周的新闻大事热点