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


    👉关于作者

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

    在这里插入图片描述

    👉实践过程

    😜问题

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

    😜解决

    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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117

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

    👉其他

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

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

  • 相关阅读:
    MyBatis有哪几种运行SQL的方式呢?
    golang gin ShouldBindJSON绑定form表单数据:application/x-www-form-urlencoded对应form
    2 C++中的引用
    Spring的作用域和生命周期
    ArrayList的removeAll和retainAll方法
    Web信息收集,互联网上的裸奔者
    重装系统后没声音如何解决
    VPP以太网VLAN子接口
    零基础在家就可以做的副业,七个兼职项目推荐
    Shell-05Shell三剑客之sed
  • 原文地址:https://blog.csdn.net/qq_27489007/article/details/134276479