Android修行手册 - POI操作Excel常用样式(字体,背景,颜色,Style)

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

👉实践过程

😜问题

在 Android 平台如何把 Excel 的 Style 样式玩出花来。

😜解决

java 复制代码
private static Map<String, CellStyle> createStyles(Workbook wb) {
        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();  // 创建一个样式映射表,用于存储单元格样式
        CellStyle style;  // 定义单元格样式
        Font titleFont = wb.createFont();  // 创建一个字体对象,用于设置标题样式
        titleFont.setFontHeightInPoints((short) 18);  // 设置字体高度为18点
        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);  // 设置字体为粗体
        style = wb.createCellStyle();  // 创建一个单元格样式
        style.setAlignment(CellStyle.ALIGN_CENTER);  // 设置对齐方式为居中
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  // 设置垂直对齐方式为居中
        style.setFont(titleFont);  // 设置字体为标题字体
        styles.put("title", style);  // 将标题样式放入样式映射表中

        Font monthFont = wb.createFont();  // 创建一个字体对象,用于设置月份样式
        monthFont.setFontHeightInPoints((short) 11);  // 设置字体高度为11点
        monthFont.setColor(IndexedColors.WHITE.getIndex());  // 设置字体颜色为白色
        style = wb.createCellStyle();  // 创建一个单元格样式
        style.setAlignment(CellStyle.ALIGN_CENTER);  // 设置对齐方式为居中
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  // 设置垂直对齐方式为居中
        style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());  // 设置填充颜色为灰色的50%
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);  // 设置填充图案为实心填充
        style.setFont(monthFont);  // 设置字体为月份字体
        style.setWrapText(true);  // 设置文本自动换行
        styles.put("header", style);  // 将月份样式放入样式映射表中

        style = wb.createCellStyle();  // 创建一个单元格样式
        style.setAlignment(CellStyle.ALIGN_CENTER);  // 设置对齐方式为居中
        style.setWrapText(true);  // 设置文本自动换行
        style.setBorderRight(CellStyle.BORDER_THIN);  // 设置右边界为细线
        style.setRightBorderColor(IndexedColors.BLACK.getIndex());  // 设置右边界颜色为黑色
        style.setBorderLeft(CellStyle.BORDER_THIN);  // 设置左边界为细线
        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());  // 设置左边界颜色为黑色
        style.setBorderTop(CellStyle.BORDER_THIN);  // 设置上边界为细线
        style.setTopBorderColor(IndexedColors.BLACK.getIndex());  // 设置上边界颜色为黑色
        style.setBorderBottom(CellStyle.BORDER_THIN);  // 设置下边界为细线
        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());  // 设置下边界颜色为黑色
        styles.put("cell", style);  // 将单元格样式放入样式映射表中

        style = wb.createCellStyle();  // 创建一个单元格样式
        style.setAlignment(CellStyle.ALIGN_CENTER);  // 设置对齐方式为居中
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  // 设置垂直对齐方式为居中
        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());  // 设置填充颜色为灰色的25%
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);  // 设置填充图案为实心填充
        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));  // 设置数据格式为两位小数
        styles.put("formula", style);  // 将公式样式放入样式映射表中

        //*********************add by germmy@20131013 start************************
        //普通单元格,四周有黑线
        style = wb.createCellStyle();  // 创建一个样式对象
        style.setAlignment(CellStyle.ALIGN_RIGHT);  // 设置单元格内容右对齐
        style.setWrapText(true);  // 设置单元格内容自动换行
        style.setBorderRight(CellStyle.BORDER_THIN);  // 设置单元格右边界为细实线
        style.setRightBorderColor(IndexedColors.BLACK.getIndex());  // 设置单元格右边界颜色为黑色
        style.setBorderLeft(CellStyle.BORDER_THIN);  // 设置单元格左边界为细实线
        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());  // 设置单元格左边界颜色为黑色
        style.setBorderTop(CellStyle.BORDER_THIN);  // 设置单元格上边界为细实线
        style.setTopBorderColor(IndexedColors.BLACK.getIndex());  // 设置单元格上边界颜色为黑色
        style.setBorderBottom(CellStyle.BORDER_THIN);  // 设置单元格下边界为细实线
        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());  // 设置单元格下边界颜色为黑色
        style.setDataFormat(wb.createDataFormat().getFormat("#,##0"));  // 设置单元格数据格式为千分位逗号分隔的货币格式
        styles.put("normalcell", style);  // 将该样式对象添加到样式集合中,键为"normalcell"

        //横向求和公式,粗体,有淡紫色背景,四周有黑色
        style = wb.createCellStyle();
        XSSFCellStyle styleTemp = ((XSSFCellStyle) style);  // 将style转换为XSSFCellStyle类型,并赋值给styleTemp变量
        styleTemp.setAlignment(CellStyle.ALIGN_RIGHT);  // 设置styleTemp的对齐方式为右对齐
        styleTemp.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  // 设置styleTemp的垂直对齐方式为居中对齐
        Font formulaFont = wb.createFont();  // 创建一个新的字体对象formulaFont
        formulaFont.setFontName("宋体");  // 设置formulaFont的字体名为宋体
        formulaFont.setFontHeightInPoints((short) 11);  // 设置formulaFont的字体大小为11磅
        formulaFont.setBoldweight(Font.BOLDWEIGHT_BOLD);  // 设置formulaFont的粗体样式为加粗
        styleTemp.setFont(formulaFont);  // 设置styleTemp的字体为formulaFont

        //控制颜色
        styleTemp.setFillForegroundColor(new XSSFColor(new byte[]{(byte) 255, (byte) 0, (byte) 0, (byte) 255}));
//      style.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.getIndex());
        styleTemp.setFillPattern(CellStyle.SOLID_FOREGROUND); // 设置填充图案为实心填充

        styleTemp.setBorderRight(CellStyle.BORDER_THIN); // 设置右边界为细边框,颜色为黑色
        styleTemp.setRightBorderColor(IndexedColors.BLACK.getIndex());

        styleTemp.setBorderLeft(CellStyle.BORDER_THIN); // 设置左边界为细边框,颜色为黑色
        styleTemp.setLeftBorderColor(IndexedColors.BLACK.getIndex());

        styleTemp.setBorderTop(CellStyle.BORDER_THIN); // 设置上边界为细边框,颜色为黑色
        styleTemp.setTopBorderColor(IndexedColors.BLACK.getIndex());

        styleTemp.setBorderBottom(CellStyle.BORDER_THIN); // 设置下边界为细边框,颜色为黑色
        styleTemp.setBottomBorderColor(IndexedColors.BLACK.getIndex());

        // 设置数据格式为千分位格式
        styleTemp.setDataFormat(wb.createDataFormat().getFormat("#,##0"));
        styles.put("formula_h", styleTemp);//横向的公式颜色
        style = wb.createCellStyle(); //纵向求和公式,四周有黑线
        style.setAlignment(CellStyle.ALIGN_RIGHT); // 设置单元格样式水平对齐方式为右对齐
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); // 设置单元格样式垂直对齐方式为居中对齐
        style.setBorderRight(CellStyle.BORDER_THIN); // 设置单元格右边界为细实线,颜色为黑色
        style.setRightBorderColor(IndexedColors.BLACK.getIndex());
        style.setBorderLeft(CellStyle.BORDER_THIN); // 设置单元格左边界为细实线,颜色为黑色
        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        style.setBorderTop(CellStyle.BORDER_THIN); // 设置单元格顶部边界为细实线,颜色为黑色
        style.setTopBorderColor(IndexedColors.BLACK.getIndex());
        style.setBorderBottom(CellStyle.BORDER_THIN); // 设置单元格底部边界为细实线,颜色为黑色
        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        style.setDataFormat(wb.createDataFormat().getFormat("#,##0")); // 设置单元格数据格式为千分位格式

        styles.put("formula_v", style);//纵向的公式颜色

        style = wb.createCellStyle();  // 创建一个样式对象
        style.setAlignment(CellStyle.ALIGN_CENTER);  // 设置文本对齐方式为居中
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  // 设置垂直对齐方式为居中
        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());  // 设置填充颜色为灰色(40%)
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);  // 设置填充模式为实心填充
        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));  // 设置数据格式为两位小数

        styles.put("formula_2", style);
        return styles;
    }

该函数通过调用Workbook的createFont()方法创建了一个字体对象,并设置了一些属性,比如字体的高度和粗细。然后,通过调用Workbook的createCellStyle()方法创建了一个单元格样式对象,并设置了一些属性,比如对齐方式和填充颜色。之后,将之前创建的字体对象设置为单元格样式的字体。最后,将单元格样式对象存储在一个Map中,以字符串作为键和单元格样式对象作为值。这个函数的目的是创建一些常用的单元格样式,并存储在一个Map中方便后续使用。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步 ☁️,我观你气度不凡 ,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞 👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。

相关推荐
Dnelic-37 分钟前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记
Eastsea.Chen3 小时前
MTK Android12 user版本MtkLogger
android·framework
长亭外的少年10 小时前
Kotlin 编译失败问题及解决方案:从守护进程到 Gradle 配置
android·开发语言·kotlin
开心点幸运点11 小时前
Excel——宏教程(1)
excel
建群新人小猿13 小时前
会员等级经验问题
android·开发语言·前端·javascript·php
1024小神14 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
兰琛14 小时前
20241121 android中树结构列表(使用recyclerView实现)
android·gitee
Y多了个想法15 小时前
RK3568 android11 适配敦泰触摸屏 FocalTech-ft5526
android·rk3568·触摸屏·tp·敦泰·focaltech·ft5526
NotesChapter16 小时前
Android吸顶效果,并有着ViewPager左右切换
android
_祝你今天愉快17 小时前
分析android :The binary version of its metadata is 1.8.0, expected version is 1.5.
android