JAVA 使用apache poi实现EXCEL文件的输出;apache poi实现标题行的第一个字符为红色;EXCEL设置某几个字符为别的颜色

server/2025/1/15 4:42:23/

 设置输出文件的列宽,防止文件过于丑陋

Sheet sheet = workbook.createSheet(FileConstants.ERROR_FILE_SHEET_NAME);
sheet.setColumnWidth(0, 40 * 256);
sheet.setColumnWidth(1, 20 * 256);
sheet.setColumnWidth(2, 20 * 256);
sheet.setColumnWidth(3, 20 * 256);

实现标题行的第一个字符为红色,效果如图

//这边的0,1   就是设置第一个字符  

Font font = workbook.createFont(); font.setColor(IndexedColors.RED.getIndex());

RichTextString store = workbook.getCreationHelper().createRichTextString(FileConstants.UPDATE_TEMPLATE_NAMES.get(Constants.ZERO)); store.applyFont(0, 1, font);

titleRow.createCell(Constants.ONE_INT).setCellValue(store);

判断如果是第一列的话   设置字体为红色

if (Constants.ZERO.equals(columnIndex)) {cellStyle.setFont(font);cell.setCellStyle(cellStyle);
}

将文件上传oss保存,可以忽略

try (InputStream inputStream = new ByteArrayInputStream(out.toByteArray())) {aliyunOssUtil.uploadFile(ossFilePath, inputStream);
}

 完整代码如下:

java">    private void uploadErrorFile(List<BatchUpdateStatusFileDTO> list, String fileBatchId) {try (ByteArrayOutputStream out = new ByteArrayOutputStream();Workbook workbook = new XSSFWorkbook()) {Sheet sheet = workbook.createSheet(FileConstants.ERROR_FILE_SHEET_NAME);sheet.setColumnWidth(0, 40 * 256);sheet.setColumnWidth(1, 20 * 256);sheet.setColumnWidth(2, 20 * 256);sheet.setColumnWidth(3, 20 * 256);// 创建标题行Row titleRow = sheet.createRow(0);titleRow.createCell(Constants.ZERO).setCellValue(StringPool.EMPTY);Font font = workbook.createFont();font.setColor(IndexedColors.RED.getIndex());RichTextString store = workbook.getCreationHelper().createRichTextString(FileConstants.UPDATE_TEMPLATE_NAMES.get(Constants.ZERO));store.applyFont(0, 1, font);titleRow.createCell(Constants.ONE_INT).setCellValue(store);RichTextString number = workbook.getCreationHelper().createRichTextString(FileConstants.UPDATE_TEMPLATE_NAMES.get(Constants.ONE_INT));number.applyFont(0, 1, font);titleRow.createCell(Constants.TWO_INT).setCellValue(number);RichTextString status = workbook.getCreationHelper().createRichTextString(FileConstants.UPDATE_TEMPLATE_NAMES.get(Constants.TWO_INT));status.applyFont(0, 1, font);titleRow.createCell(Constants.THREE_INT).setCellValue(status);// 创建数据行for (int i = 0; i < theResList.size(); i++) {BatchUpdateStatusFileDTO data = theResList.get(i);Row row = sheet.createRow(i + 1);createCell(row, Constants.ZERO, data.getCheckResult(), workbook, font);createCell(row, Constants.ONE_INT, data.getSalesStore(), workbook, font);createCell(row, Constants.TWO_INT, data.getSalesOrder(), workbook, font);createCell(row, Constants.THREE_INT, data.getSalesStatus(), workbook, font);}String ossFilePath = String.format(FileConstants.BATCH_UPDATE_ERROR_FILE_PATH, fileBatchId);// 将Excel输出为InputStreamworkbook.write(out);try (InputStream inputStream = new ByteArrayInputStream(out.toByteArray())) {aliyunOssUtil.uploadFile(ossFilePath, inputStream);}} catch (Exception e) {log.error("---Modify the order status in batches, failed to upload an error file---", e);}}private void createCell(Row row, int columnIndex, Object value, Workbook workbook, Font font) {Cell cell = row.createCell(columnIndex);if (value instanceof String) {cell.setCellValue((String) value);} else if (value instanceof Integer) {cell.setCellValue((Integer) value);} else {cell.setCellValue(value.toString());}CellStyle cellStyle = workbook.createCellStyle();cellStyle.setWrapText(Boolean.TRUE);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);cell.setCellStyle(cellStyle);if (Constants.ZERO.equals(columnIndex)) {cellStyle.setFont(font);cell.setCellStyle(cellStyle);}}


http://www.ppmy.cn/server/158461.html

相关文章

NLP中的问答(Question answering)

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;问答&#xff08;Question Answering, QA&#xff09;任务并不严格等同于分类任务&#xff0c;但某些形式的QA任务可以被建模为分类问题。具体情况如下&#xff1a; 1. 问答任务的分类情况 多选问答 如果问题有多个备…

【数据分析】一、初探 Numpy

目录 前言1. 一维 array 的生成2. 一维 array 的基本操作2.1. 查看属性2.2. 花式索引2.3. 条件筛查2.4. 数据统计 3. n 维 array 的生成4. n 维 array 的基本操作4.1. 查看属性4.2. 查询和切片4.3. 花式索引4.4. 矩阵 前言 Numpy是Python的常用开源数值计算扩展库&#xff0c;用…

51单片机 和 STM32 在硬件操作上的差异

51单片机 和 STM32 在硬件操作上的差异 1. 时钟系统的差异 STM32 的时钟系统 STM32 的时钟系统非常复杂&#xff0c;支持多种时钟源&#xff08;如内部晶振、外部晶振、PLL 等&#xff09;&#xff0c;并且每个外设&#xff08;如 GPIO、定时器、串口等&#xff09;都有独立的…

数据结构与算法之链表: LeetCode 146. LRU 缓存 (Ts版)

LRU 缓存 https://leetcode.cn/problems/lru-cache/description/ 描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 ke…

Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步

Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;5&#xff09;&#xff1a;将主库复制到备库并启动同步 目录 Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;5&#xff09;&#xff1a;将主库复制到备库并启动…

深入理解 Java 设计模式之策略模式

一、引言 在 Java 编程的世界里&#xff0c;设计模式就如同建筑师手中的蓝图&#xff0c;能够帮助我们构建出更加健壮、灵活且易于维护的代码结构。而策略模式作为一种经典的行为型设计模式&#xff0c;在诸多实际开发场景中都发挥着至关重要的作用。它能够让算法的定义与使用…

wsl2上mysql出现ip端口冲突问题

现象出现于win11系统wsl2平台跑ubuntu&#xff0c;在win11 22h2之后提供固化wsl ip地址的功能&#xff0c;具体可以百度&#xff0c;大概是在C:/用户/用户名文件夹下新建.wslconfig文件&#xff0c;其中添加固化IP地址的参数。 固化完毕后&#xff0c;wsl将不再使用虚拟ip&…

Eureka缓存机制

一、Eureka的CAP特性 Eureka是一个AP系统&#xff0c;它优先保证可用性&#xff08;A&#xff09;和分区容错性&#xff08;P&#xff09;&#xff0c;而不保证强一致性&#xff08;C&#xff09;。这种设计使得Eureka在分布式系统中能够应对各种故障和分区情况&#xff0c;保…