Java导出Excel给每一列设置不同样式示例

news2024/9/9 4:56:22

Excel导出这里不讲,方法很多,原生的POI可以参照 Java原生POI实现的Excel导入导出(简单易懂)
这里只说怎么给Excel每一列设置不同的样式,比如下面这样的

在这里插入图片描述

直接上代码

@Override
    public void exportTemplate(HttpServletRequest request, HttpServletResponse response) throws Exception {
        try (Workbook wb = new SXSSFWorkbook(1000)) {
            // 构建一个导出页
            Sheet sheet = wb.createSheet("用户信息表");
            CellStyle style = wb.createCellStyle();
            style.setAlignment(HorizontalAlignment.CENTER);
            style.setVerticalAlignment(VerticalAlignment.CENTER);
            style.setBorderBottom(BorderStyle.THIN);
            style.setBorderLeft(BorderStyle.THIN);
            style.setBorderTop(BorderStyle.THIN);
            style.setBorderRight(BorderStyle.THIN);
            style.setWrapText(true);// 自动换行
            Font font = wb.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 11);
            style.setFont(font);
            DataFormat format = wb.createDataFormat();
            style.setDataFormat(format.getFormat("@")); // 设置为文本格式
            sheet.setDefaultRowHeight((short) 500);

            // 构建excel抬头
            Row row0 = sheet.createRow((int) 0); // 第一行
            Cell cell0_0 = row0.createCell(0);
            cell0_0.setCellValue("序号");
            cell0_0.setCellStyle(style);
            sheet.setColumnWidth(0, 15 * 256);// 列宽
            sheet.setDefaultColumnStyle(0, style);

            Cell cell0_1 = row0.createCell(1);
            cell0_1.setCellValue("姓名");
            cell0_1.setCellStyle(style);
            sheet.setColumnWidth(1, 15 * 256);// 列宽
            sheet.setDefaultColumnStyle(1, style);

            Cell cell0_2 = row0.createCell(2);
            cell0_2.setCellValue("国家标识码");
            cell0_2.setCellStyle(style);
            sheet.setColumnWidth(2, 15 * 256);// 列宽
            sheet.setDefaultColumnStyle(2, style);

            Cell cell0_3 = row0.createCell(3);
            cell0_3.setCellValue("手机号");
            cell0_3.setCellStyle(style);
            sheet.setColumnWidth(3, 15 * 256);// 列宽
            sheet.setDefaultColumnStyle(3, style);

            Cell cell0_4 = row0.createCell(4);
            cell0_4.setCellValue("身份证号");
            cell0_4.setCellStyle(style);
            sheet.setColumnWidth(4, 20 * 256);// 列宽
            sheet.setDefaultColumnStyle(4, style);

            Cell cell0_5 = row0.createCell(5);
            cell0_5.setCellValue("部门名称(选填)");
            cell0_5.setCellStyle(style);
            sheet.setColumnWidth(5, 20 * 256);// 列宽
            sheet.setDefaultColumnStyle(5, style);

            Cell cell0_6 = row0.createCell(6);
            cell0_6.setCellValue("职位(选填,多个用英文/分隔)");
            cell0_6.setCellStyle(style);
            sheet.setColumnWidth(6, 35 * 256);// 列宽
            sheet.setDefaultColumnStyle(6, style);

            // 构建示例
            Row row1 = sheet.createRow((int) 1); // 第二行
            CellStyle style1 = wb.createCellStyle();
            style1.setAlignment(HorizontalAlignment.CENTER);
            style1.setVerticalAlignment(VerticalAlignment.CENTER);
            style1.setBorderBottom(BorderStyle.THIN);
            style1.setBorderLeft(BorderStyle.THIN);
            style1.setBorderTop(BorderStyle.THIN);
            style1.setBorderRight(BorderStyle.THIN);
            style1.setWrapText(true);// 自动换行
            style1.setFont(font);
            DataFormat format1 = wb.createDataFormat();
            style1.setDataFormat(format1.getFormat("@")); // 设置为文本格式
            style1.setFillForegroundColor((short) 13);// 设置背景色
            style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);

            Cell cell1_0 = row1.createCell(0);
            cell1_0.setCellValue("示例(保留)");
            cell1_0.setCellStyle(style1);

            Cell cell1_1 = row1.createCell(1);
            cell1_1.setCellValue("张三");
            cell1_1.setCellStyle(style1);

            Cell cell1_2 = row1.createCell(2);
            cell1_2.setCellValue("+86");
            cell1_2.setCellStyle(style1);

            Cell cell1_3 = row1.createCell(3);
            cell1_3.setCellValue("13700002222");
            cell1_3.setCellStyle(style1);

            Cell cell1_4 = row1.createCell(4);
            cell1_4.setCellValue("452186200001010001");
            cell1_4.setCellStyle(style1);

            Cell cell1_5 = row1.createCell(5);
            cell1_5.setCellValue("技术部");
            cell1_5.setCellStyle(style1);

            Cell cell1_6 = row1.createCell(6);
            cell1_6.setCellValue("科室主任/细胞生物学家/博士生导师");
            cell1_6.setCellStyle(style1);

            // 构建第二列
            Row row2 = sheet.createRow((int) 2); // 第一行
            Cell cell2_0 = row2.createCell(0);
            cell2_0.setCellValue("1");
            cell2_0.setCellStyle(style);

            Cell cell2_1 = row2.createCell(1);
            cell2_1.setCellValue("");
            cell2_1.setCellStyle(style);

            Cell cell2_2 = row2.createCell(2);
            cell2_2.setCellValue("");
            cell2_2.setCellStyle(style);

            Cell cell2_3 = row2.createCell(3);
            cell2_3.setCellValue("");
            cell2_3.setCellStyle(style);

            Cell cell2_4 = row2.createCell(4);
            cell2_4.setCellValue("");
            cell2_4.setCellStyle(style);

            Cell cell2_5 = row2.createCell(5);
            cell2_5.setCellValue("");
            cell2_5.setCellStyle(style);

            Cell cell2_6 = row2.createCell(6);
            cell2_6.setCellValue("");
            cell2_6.setCellStyle(style);


            String fileName = "用户信息表.xlsx";
            if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
            } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
                fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
            } else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
            }
            response.reset();
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");  
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            wb.write(response.getOutputStream());
            response.getOutputStream().close();
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第23天|CV-ResNet50迁移学习

打卡 目录 打卡 迁移学习 实战练习 数据准备 数据处理 数据处理函数 数据处理流程 数据可视化 训练模型 构建Resnet50网络 固定特征进行训练 network 的输出 训练和评估 可视化模型预测 通过本文,了解迁移学习的重点在于,了解你的模型结构…

LGA-4500激光气体分析仪说明手册

目 录 阅 读 说 明 I 用户须知 I 概况 I 注意和警示信息 I 供货和运输 III 质保和维修 III 联系方式 III 一、简介 1 1.1概要 1 1.2测量原理 1 1.2.1单线光谱技术 1 1.2.2激光频率扫描技术 2 1.2.3谱线展宽自动修正技术 2 1.3系统组成 2 1.4系统特点 3 1.5系统指标 4 1.6激光产…

决策树可解释性分析

决策树可解释性分析 决策树是一种广泛使用的机器学习算法,以其直观的结构和可解释性而闻名。在许多应用场景中,尤其是金融、医疗等领域,模型的可解释性至关重要。本文将从决策路径、节点信息、特征重要性等多个方面分析决策树的可解释性&…

Thymeleaf(看这一篇就够了)

目录: Thymeleaf变量输出操作字符串&时间条件判断迭代遍历使用状态变量获取域中的数据URL写法相关配置 Thymeleaf Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎,类似JSP。它可以轻易的与SpringMVC等Web框架进行集成作为Web应用的模板引擎。Spri…

暄桐林曦老师推荐书单——《菜根谭》

暄桐是一间传统美学教育教室,创办于2011年,林曦是创办人和授课老师,教授以书法为主的传统文化和技艺,皆在以书法为起点,亲近中国传统之美,以实践和所得,滋养当下生活。      在暄桐教室的课…

机械运动、工控机概念整理

Signal : 信号 pul 【pulse】是驱动脉冲信号,发一个脉冲,电机走一步。 dir是方向控制信号,控制电机正转或反转。 ena是使能信号,这个信号必须开启,才能驱动电机。 voltage: 电压 VCC&#…

Python软件开发:AI毕业设计生成器引领未来

🌟 革新软件开发:Python毕业设计生成器引领未来 🚀 目录 🌟 革新软件开发:Python毕业设计生成器引领未来 🚀🎓 课题简介🌟 开发目的📈 开发意义 📚 研究方法&…

[ BLE4.0 ] 伦茨ST17H66开发-串口UART0的接收与发送

目录 一、前言 二、实现步骤 1.设置回调函数 2.关闭睡眠模式 三、效果展示 四、工程源代码 一、前言 串口通信在任何一款单片机开发中都是尤为重要的。本文涉及的开发所使用的例程依然是基于[ BLE4.0 ] 伦茨ST17H66开发-OSAL系统中添加自己的Task任务文章的工程源码&#x…

进程间通信--套接字socket

前面提到的管道、消息队列、共享内存、信号和信号量都是在同一台主机上进行进程间通信,那要想跨网络与不同主机上的进程之间通信,就需要Socket通信了。 实际上,Socket通信不仅可以跨网络与不同主机的进程间通信,还可以在同主机上…

一键升级GIS场景视觉效果,告别繁琐操作

在当今的数字化时代,GIS(地理信息系统)不再仅仅只能通过一些二维示意图或简陋的三维地形图表示,它可以通过专业的软件简单升级视效。想象一下,在你的GIS场景中,阳光明媚的天气、突如其来的暴风雨、缭绕的晨…

工时管理平台核心功能解析:你需要了解的

国内外主流的10款工时管理平台对比:PingCode、Worktile、Todoist、ClickUp、滴答清单、专注清单、一木清单、NarTick、Tweek、朝暮计划。 在选择合适的工时管理平台时,你是否感到挑战重重?市场上的各种选项似乎都声称能够提升效率和减轻管理负…

【SQL Server点滴积累】SQL Server 2016数据库邮件(Database Mail)功能故障的解决方法

今天和大家分享SQL Server 2016数据库邮件(Database Mail)功能故障的解决方法 故障现象: 在SQL Server 2016中配置完成数据库邮件(Database Mail)功能后,当你尝试发送测试邮件后,既收不到测试邮件,也不显示错误消息 KB3186435 -…

Python数值计算(11)——拉格朗日插值

本篇介绍一下多项式插值中,拉格朗日法的原理及其实现。 1. 一点数学知识 先引用数学背景。如果给定N个点,然后要求一个多项式通过这N个点,最简单直接的方式是列出线性方程求解,N个点可以确定N个未知量,则所求的拟合多…

下面关于枚举的描述正确的一项是?

A. 枚举中定义的每一个枚举项其类型都是String; B. 在Java中可以直接继承java.util.Enum类实现枚举类的定义; C. 利用枚举类中的values()方法可以取得全部的枚举项; D. 枚举中定义的构造方法只能够使用private权限声明; 答案选择…

springboot山东外事职业大学校园食堂点餐系统-计算机毕业设计源码10417

摘 要 近年来,随着国民收入的提高,各行业取得长足进步,也带动了互联网行业的快速发展,许多传统行业开始与互联网相结合,通过数字化转型打造新的发展生态。 本文针对山东外事大学校园食堂点餐系统的需求,基于…

Java内存区域与内存溢出异常详解

在Java编程中,理解Java虚拟机的内存布局及其管理机制对于开发高效、稳定的应用程序至关重要。Java虚拟机的内存主要分为几个运行时区域,这些区域各司其职,共同支撑起Java程序的运行。本文将详细探讨Java虚拟机的内存区域以及这些区域如何与内…

Yolov模型的使用及数据集准备(1)LabelImg的下载和使用

1、LabelImg下载: labelimg简单来说就是打标签用的软件,当需要使用自定义数据集进行模型训练时,往往需要使用该软件来打标签。 下载地址:GitHub - HumanSignal/labelImg 1.1下载之后对压缩包进行解压 2、打开电脑的anaconda pro…

MyBatis XML配置文件

目录 一、引入依赖 二、配置数据库的连接信息 三、实现持久层代码 3.1 添加mapper接口 3.2 添加UserInfoXMLMapper.xml 3.3 增删改查操作 3.3.1 增(insert) 3.3.2 删(delete) 3.3.3 改(update) 3.3.4 查(select) 本篇内容仍然衔接上篇内容,使用的代码及案…

8G 显存玩转书生大模型 Demo

创建可用环境 # 创建环境 conda create -n demo python3.10 -y # 激活环境 conda activate demo # 安装 torch conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda12.1 -c pytorch -c nvidia -y # 安装其他依赖 pip install transformers4.38 pip in…

Moving Object Segmentation: All You Need Is SAM(and Flow) 论文详解

系列文章目录 文章目录 系列文章目录前言摘要1 引言2 相关工作3 SAM Preliminaries4 帧级分割Ⅰ:以流作为输入5 帧级分割Ⅱ:以流为提示6 序列级掩膜关联7 实验7.1 数据集7.2 评价指标7 .3 实施细节7.4 消融实验7.5 定量结果7 .定性可视化 8 结论致谢附录…