设定excel导出时单元格的格式

一、需求

要求excel导出时,对应列里面的内容格式为日期,数值格式并有精度要求 ,如下图:

使用alibaba,easyexcel,默认的导出数据格式为文本,excel显示为常规,使用数据规范注解@NumberFormat一直不生效,无奈选择原生的apache.poi。

二、具体实现

   public void writePoi(List<Export> exportList) {// 1.在内存中创建一个excel文件,excel2003之前版本使用HSSFWorkbook,之后版本使用XSSFWorkbookHSSFWorkbook workbook = new HSSFWorkbook();
//        XSSFWorkbook workbook = new XSSFWorkbook();// 2.创建工作簿HSSFSheet sheet = workbook.createSheet("已开具发票");//设置列宽sheet.setDefaultColumnWidth(15);// 3.创建标题行HSSFRow titlerRow = sheet.createRow(0);titlerRow.createCell(0).setCellValue("开票日期");titlerRow.createCell(1).setCellValue("发票号码");titlerRow.createCell(2).setCellValue("购方税号");titlerRow.createCell(3).setCellValue("购方名称");titlerRow.createCell(4).setCellValue("规格型号");titlerRow.createCell(5).setCellValue("计量单位");titlerRow.createCell(6).setCellValue("单价");titlerRow.createCell(7).setCellValue("数量");titlerRow.createCell(8).setCellValue("金额");titlerRow.createCell(9).setCellValue("税额");//4.设置需要的格式DataFormat dataFormat = workbook.createDataFormat();CellStyle dateStyle = workbook.createCellStyle();dateStyle.setDataFormat(dataFormat.getFormat("yyyy-m-d;@")); // 设置日期格式,注意日期格式规范之后不会直接显示单元格式为日期,但是使用筛选功能时可以按照日期范围进行筛选。dateStyle.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中CellStyle doubleStyle = workbook.createCellStyle();doubleStyle.setDataFormat(dataFormat.getFormat("0.00_ ")); // 设置数值格式doubleStyle.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中CellStyle floatStyle = workbook.createCellStyle();floatStyle.setDataFormat(dataFormat.getFormat("0.00000000_ ")); // 设置单价格式floatStyle.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中// 5.遍历数据,创建数据行for (Export export : exportList) {// 获取最后一行的行号int lastRowNum = sheet.getLastRowNum();// 添加新行HSSFRow dataRow = sheet.createRow(lastRowNum + 1);HSSFCell hssfCell0 = dataRow.createCell(0);hssfCell0.setCellStyle(dateStyle);hssfCell0.setCellValue(export.getKprq());dataRow.createCell(1).setCellValue(export.getFphm());dataRow.createCell(2).setCellValue(export.getGfsh());dataRow.createCell(3).setCellValue(export.getGfmc());dataRow.createCell(4).setCellValue(export.getGgxh());dataRow.createCell(5).setCellValue(export.getJldw());HSSFCell hssfCell6 = dataRow.createCell(6);hssfCell6.setCellStyle(floatStyle);hssfCell6.setCellValue(export.getDj());HSSFCell hssfCell7 = dataRow.createCell(7);hssfCell7.setCellStyle(doubleStyle);hssfCell7.setCellValue(export.getSl());HSSFCell hssfCell8 =dataRow.createCell(8);hssfCell8.setCellStyle(doubleStyle);hssfCell8.setCellValue(export.getJe());HSSFCell hssfCell9 =dataRow.createCell(9);hssfCell9.setCellStyle(doubleStyle);hssfCell9.setCellValue(export.getSe());}// 设置自适应列宽for (int i = 0; i < sheet.getRow(0).getLastCellNum(); i++) {sheet.autoSizeColumn(i);}// 5.创建文件名String fileName = "已开发票明细导出_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";// 6.获取输出流对象OutputStream outputStream;try {outputStream = new FileOutputStream(excelFilePath + "\\" + fileName);// 7.写出文件,关闭流workbook.write(outputStream);workbook.close();outputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

注:数据规范所需的format规则可从excel中的格式设置看到,具体步骤为:

右键单击单元格,选择设置单元格格式,1选择你需要的格式,2设定好精度,

3直接点击自定义,即可看到format规范,注意数值格式的规范后面必须有一个空格,否则不生效,可以看到下图的下划线与光标之间是有一个空格的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 官方屏幕适配之ScreenMatch

背景&#xff1a; Android 项目的一个app需要适配手机平板&#xff0c;为了一套UI和可以适配2个不同屏幕&#xff0c;记录一个适配的技巧&#xff1a; 前提&#xff0c;使用这个框架&#xff1a;GitHub - wildma/ScreenAdaptation: :fire:一种非常好用的 Android 屏幕适配——…

udev自动创建设备节点的机制

流程框图如下 自动创建 1 内核检测到设备插入后&#xff0c;会发送一个uevent事件到内核中&#xff0c;并提供有关硬件设备的信息。 2 udevd守护程序收到uevent事件后&#xff0c;创建一个设备类&#xff0c;&#xff08;向上提交目录信息&#xff09;&#xff0c;会在内核中…

go初识iris框架(七) - 实战资源导入和项目框架搭建

实战项目框架搭建 如下是项目框架搭建后的说明&#xff1a; config:&#xff1a;项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…

人工智能:神经细胞模型到神经网络模型

人工智能领域中的重要流派之一是&#xff1a;从神经细胞模型&#xff08;Neural Cell Model&#xff09;到神经网络模型&#xff08;Neural Network Model&#xff09;。 一、神经细胞模型 第一个人工神经细胞模型是“MP”模型&#xff0c;它是由麦卡洛克、匹茨合作&#xff0…

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容&#xff0c;提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧&#xff0c;现在已经是物联网设备最热门的协议了。 作为记录&#xff0c;也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…

84 # koa 实现文件上传功能

下面使用实现文件上传功能&#xff0c;先新建文件夹&#xff0c;结构如下&#xff1a; index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-…

java企业数据管理系统

项目介绍 此项目为企业数据管理系统的后端部分&#xff0c;前端部分请参考vue-admin&#xff0c;项目实现了菜单管理、用户管理、角色管理和权限管理四个基础模块&#xff0c;前端菜单管理结合动态路由可自由添加菜单。结合Shiro权限管理实现了菜单和按钮的权限控制。 ❝ 前端…

Revit SDK 介绍:CurtainWallGrid 幕墙网格

前言 这个例子介绍如何创建幕墙&#xff0c;以及如何通过 API 编辑幕墙。 内容 运行效果&#xff1a; 创建幕墙 幕墙在 Revit 体系里面属于墙的一种&#xff0c;因此&#xff0c;它对应的 API 类型仍然为 Wall&#xff0c;只是类型有差异。 // WallGeometry::CreateCurt…

Docker容器技术实战-1

1.docker容器 docker就好比传统的货运集装箱 每个虚拟机都有独立的操作系统&#xff0c;互不干扰&#xff0c;在这个虚拟机里可以跑任何东西 如应用 文件系统随便装&#xff0c;通过Guest OS 做了一个完全隔离&#xff0c;所以安全性很好&#xff0c;互不影响 容器 没有虚拟化…

数据结构与算法(一)数组的相关概念和底层java实现

一、前言 从今天开始&#xff0c;笔者也开始从0学习数据结构和算法&#xff0c;但是因为这次学习比较捉急&#xff0c;所以记录的内容并不会过于详细&#xff0c;会从基础和底层代码实现以及力扣相关题目去写相关的文章&#xff0c;对于详细的概念并不会过多讲解 二、数组基础…

【数据结构】树的基础知识及三种存储结构

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

科教兴国 | 拓世集团携手中国航天广电集团,打造《AI+教育平台》

在这个时代&#xff0c;人工智能的奇迹交织成一片璀璨的星河。在这片星河中&#xff0c;各大企业如同星辰&#xff0c;闪烁着探索的光芒&#xff0c;寻找着那些志同道合的伙伴。我们并肩飞翔&#xff0c;穿越信息的海洋&#xff0c;共同描绘出未来的蓝图。每一次合作&#xff0…

GB28181学习(三)——心跳保活

心跳保活 要求&#xff1a; 1. 当原设备发现工作异常时&#xff0c;应立即向本SIP监控域的SIP服务器发送状态信息&#xff1b; 2. 无异常时&#xff0c;定时向本SIP监控域的SIP服务器发送状态信息&#xff1b; 3. 状态信息报送采用**MESSGAE**方法&#xff1b; 4. SIP设备宜在…

基于YOLOv8模型的80类动物目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的80类动物目标检测系统可用于日常生活中检测与定位车辆目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

使用 YCSB 和 PE 进行 HBase 性能压力测试

HBase主要性能压力测试有两个&#xff0c;一个是 HBase 自带的 PE&#xff0c;另一个是 YCSB&#xff0c;先简单说一个两者的区别。PE 是 HBase 自带的工具&#xff0c;开箱即用&#xff0c;使用起来非常简单&#xff0c;但是 PE 只能按单个线程统计压测结果&#xff0c;不能汇…

Linux--进程间通讯--FIFO(open打开)

1. 什么是FIFO FIFO命名管道&#xff0c;也叫有名管道&#xff0c;来区分管道pipe。管道pipe只能用于有血缘关系的进程间通信&#xff0c;但通过FIFO可以实现不相关的进程之间交换数据。FIFO是Linux基础文件类型中的一种&#xff0c;但是FIFO文件在磁盘上没有数据块&#xff0c…

2011-2022年北大法宝省市县环保行政处罚数据

2011-2022年北大法宝省市县环保行政处罚数据 1、时间&#xff1a;2011-2022年 2、范围&#xff1a;全国各省份、各城市、各区县 3、来源&#xff1a;北大法宝 4、数据指标&#xff1a;地区代码、地区名称、地区等级、所属省份、所属城市、处罚年份、主题分类、案件数目 5、…

glTF和GLB有什么区别?

推荐&#xff1a;使用 NSDT场景编辑器快速搭建3D应用场景 自1960年代末开始以来&#xff0c;3D扫描突飞猛进&#xff0c;彻底改变了我们创建真实世界物体和环境的数字模型的方式。虽然很容易考虑它在建筑、工程和游戏等领域的使用&#xff0c;但实际应用要广泛得多。2023年&…

基本Dos命令

1.打开cmd的方式 &#xff08;1&#xff09;winR&#xff0c;输入cmd即可 &#xff08;2&#xff09;在任意文件夹下面&#xff0c;按住shift键后点击鼠标右键&#xff0c;即可在此文件夹目录下打开命令行窗口。 &#xff08;3&#xff09;资源管理器的地址栏前面加上 cmd…