Go语言excelize包-06-样式设置(样式设置、区间使用样式、行使用样式、列使用样式)

2023-11-21 21:50

本文主要是介绍Go语言excelize包-06-样式设置(样式设置、区间使用样式、行使用样式、列使用样式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 样式设置
    • 1.1 创建样式
    • 1.2 Style 结构体
      • 1.2.1 Border结构体(边框设置)
        • 结构体语法
        • 完整示例
      • 1.2.2 Fill结构体(填充设置)
        • 结构体语法
        • 完整示例(渐变填充)
        • 示例(纯色填充)
      • 1.2.3 Font结构体(字体设置)
        • 结构体语法
        • 完整示例
      • 1.2.4 Alignment结构体(对齐方式)
        • 结构体语法
        • 完整示例
      • 1.2.4 NumFmt编号(自定义格式)
        • 参数
        • 完整示例
      • 1.2.5 CustomNumFmt编号(自定义数字)
        • 参数
        • 完整示例(指定小数位)
        • 完整示例(显示节)
  • 2. 样式使用
    • 2.1 单元格使用样式
    • 2.2 列使用样式
    • 2.3 行使用样式

1. 样式设置

1.1 创建样式

func (f *File) NewStyle(style interface{}) (int, error)

1.2 Style 结构体

type Style struct {Border        []Border    `json:"border"`Fill          Fill        `json:"fill"`Font          *Font       `json:"font"`Alignment     *Alignment  `json:"alignment"`Protection    *Protection `json:"protection"`NumFmt        int         `json:"number_format"`DecimalPlaces int         `json:"decimal_places"`CustomNumFmt  *string     `json:"custom_number_format"`Lang          string      `json:"lang"`NegRed        bool        `json:"negred"`
}
  • 成员说明
    • Border :边界
    • Fill :填充色
    • Font :字体
    • Alignment :对齐
    • Protection : ?
    • NumFmt :自定义格式
    • DecimalPlaces :小数点位置
    • CustomNumFmt :自定义数字格式
    • Lang : 谁的长度
    • NegRed :是否粗体?

几个常用成员(如BorderFill等)使用的结构体我们接下来将做说明:

1.2.1 Border结构体(边框设置)

结构体语法
type Border struct {Type  string `json:"type"`Color string `json:"color"`Style int    `json:"style"`
}
  • 成员说明
    • Type:边线方向
      • left
      • right
      • top
      • bottom
      • diagonalDown:左上到右下
      • diagonalUP:左下到右上
    • Color:颜色
    • Style:边线类型

Style边线类型效果如下:

完整示例
  • 代码
package mainimport ("fmt""github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()styleId, err := f.NewStyle(&excelize.Style{Border: []excelize.Border{{Type: "left", Color: "000000", Style: 1},{Type: "top", Color: "000000", Style: 2},{Type: "bottom", Color: "000000", Style: 3},{Type: "right", Color: "000000", Style: 4},{Type: "diagonalDown", Color: "000000", Style: 5},{Type: "diagonalUp", Color: "A020F0", Style: 6},},})if err != nil {fmt.Println(err)}err = f.SetCellStyle("Sheet1", "B4", "D2", styleId)if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 结果显示
    在这里插入图片描述

注意:
diagonalDowndiagonalUp同时设置,如果二者样式不同,则diagonalDown会被diagonalUp的样式覆盖。

1.2.2 Fill结构体(填充设置)

结构体语法
type Fill struct {Type    string   `json:"type"`Pattern int      `json:"pattern"`Color   []string `json:"color"`Shading int      `json:"shading"`
}
  • 说明:
    • Type
      • gradient:渐变
      • pattern:填充图
    • Shading(Type为gradient时生效)
      • 1:横向填充
      • 2:纵向填充
      • 3:对角线向下填充
      • 4:对角线向上填充
      • 5:从内向外填充
    • Pattern(Type为pattern时生效)
      • 值从1~18(图片“Pattern值”)。
      • 1 表示纯色填充
    • Color
      • Type为gradient时,Color 有两个值,Pattern不生效
      • 切片只有一个成员时,Shading 不生效。

Pattern值:

在这里插入图片描述

完整示例(渐变填充)
  • 代码
package mainimport ("fmt""github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()styleId, err := f.NewStyle(&excelize.Style{Border: []excelize.Border{{Type: "left", Color: "000000", Style: 2},{Type: "top", Color: "000000", Style: 2},{Type: "bottom", Color: "000000", Style: 2},{Type: "right", Color: "000000", Style: 2},},Fill:  excelize.Fill{Type: "gradient",Color: []string{"FFFF00", "00FF00"},Shading: 1,},})if err != nil {fmt.Println(err)}err = f.SetCellStyle("Sheet1", "B4", "D2", styleId)if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 结果显示
    在这里插入图片描述
示例(纯色填充)
style, err := f.NewStyle(&excelize.Style{Fill: excelize.Fill{Type: "pattern", Color: []string{"FF0000"}, Pattern: 1},
})

1.2.3 Font结构体(字体设置)

结构体语法
type Font struct {Bold      bool    `json:"bold"`Italic    bool    `json:"italic"`Underline string  `json:"underline"`Family    string  `json:"family"`Size      float64 `json:"size"`Strike    bool    `json:"strike"`Color     string  `json:"color"`VertAlign string  `json:"vertAlign"`
}
  • 说明:
    • Bold:是否粗体
    • Italic:是否斜体
    • Underline: 下划线
      • single :单线
      • double:双线
    • Family:字体样式
    • Size:字体大小
    • Color:字体颜色
完整示例
  • 代码
package mainimport ("fmt""github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()styleId, err := f.NewStyle(&excelize.Style{Font: &excelize.Font{Bold:   true,Italic: true,Family: "Times New Roman",Size:   36,Color:  "微软雅黑",},})if err != nil {fmt.Println(err)}f.SetCellStyle("Sheet1", "B4", "B4", styleId)f.SetCellValue("Sheet1","B4","LiuBei")if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 结果显示
    在这里插入图片描述

1.2.4 Alignment结构体(对齐方式)

结构体语法
type Alignment struct {Horizontal      string `json:"horizontal"`Indent          int    `json:"indent"`JustifyLastLine bool   `json:"justify_last_line"`ReadingOrder    uint64 `json:"reading_order"`RelativeIndent  int    `json:"relative_indent"`ShrinkToFit     bool   `json:"shrink_to_fit"`TextRotation    int    `json:"text_rotation"`Vertical        string `json:"vertical"`WrapText        bool   `json:"wrap_text"`
}
  • 说明
    • Horizontal:水平对齐
      • right
      • left
      • center
    • Indent:缩进
    • JustifyLastLine:两端对齐
    • ReadingOrder:文字方向
    • RelativeIndent:相对缩进
    • ShrinkToFit:缩小字体
    • TextRotation:文字旋转
    • Vertical:垂直对齐
      • top
      • bottom
      • center
    • WrapText:自动换行
完整示例
package mainimport ("fmt""github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()styleId, err := f.NewStyle(&excelize.Style{Alignment: &excelize.Alignment{Horizontal:      "center",Indent:          1,JustifyLastLine: true,ReadingOrder:    2,RelativeIndent:  1,ShrinkToFit:     true,TextRotation:    30,Vertical:        "top",WrapText:        true,},})if err != nil {fmt.Println(err)}f.SetCellStyle("Sheet1", "B4", "B4", styleId)f.SetCellValue("Sheet1","B4","LiuBei")if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}

结果显示
在这里插入图片描述

1.2.4 NumFmt编号(自定义格式)

参数
索引类型
27yyyy"年"m"月"
28m"月"d"日"
29m"月"d"日"
30m-d-yy
31yyyy"年"m"月"d"日"
32h"时"mm"分"
33h"时"mm"分"ss"秒"
34上午/下午 h"时"mm"分"
35上午/下午 h"时"mm"分"ss"秒
36yyyy"年"m"月
50yyyy"年"m"月
51m"月"d"日
52yyyy"年"m"月
53m"月"d"日
54m"月"d"日
55上午/下午 h"时"mm"分
56上午/下午 h"时"mm"分"ss"秒
57yyyy"年"m"月
58m"月"d"日"
完整示例
import ("fmt""github.com/xuri/excelize/v2""time"
)func main() {f := excelize.NewFile()numFmt := "yyyy\"年\"m\"月\"d\"日\""styleId, err := f.NewStyle(&excelize.Style{CustomNumFmt: &numFmt,})if err != nil {fmt.Println(err)}f.SetCellStyle("Sheet1", "B4", "B4", styleId)f.SetCellValue("Sheet1","B4",time.Now())if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 效果

在这里插入图片描述

1.2.5 CustomNumFmt编号(自定义数字)

参数
索引类型
0General
10
20.00
3#,##0
4#,##0.00
5(KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,##0_);(#,##0)
6(KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,##0_);[Red](#,##0)
7(KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,##0.00_);(#,##0.00)
8(KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,##0.00_);[Red]…#,##0.00)
90%
100.00%
110.00E+00
12# ?/?
13# ??/??
14m/d/yy
15d-mmm-yy
16d-mmm
17mmm-yy
18h:mm AM/PM
19h:mm:ss AM/PM
20h:mm
21h:mm:ss
22m/d/yy h:mm
37(#,##0_) ; (#,##0)
38(#,##0_);Red
39(#,##0.00_); (#,##0.00)
40(#,##0.00_);Red
41(* #,##0);(* (#,##0);(* “-”);(@_)
42(KaTeX parse error: Expected 'EOF', got '#' at position 3: * #̲,##0_);_(* (#,##0);($* “-”);(@_)
43(* #,##0.00);(* (#,##0.00);(* “-”??);(@_)
44(KaTeX parse error: Expected 'EOF', got '#' at position 3: * #̲,##0.00_);_(* (#,##0.00);($* “-”??);(@_)
45mm:ss
46[h]:mm:ss
47mm:ss.0
48##0.0E+0
49@
完整示例(指定小数位)

显示为五位小数

import (
"fmt"
"github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()customNumFmt := "0.00000"styleId, err := f.NewStyle(&excelize.Style{CustomNumFmt: &customNumFmt,})if err != nil {fmt.Println(err)}f.SetCellStyle("Sheet1", "B4", "B4", styleId)f.SetCellValue("Sheet1","B4",1)if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 效果
    在这里插入图片描述
完整示例(显示节)
  • 代码

import (
"fmt"
"github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()customNumFmt := "#,##0"styleId, err := f.NewStyle(&excelize.Style{CustomNumFmt: &customNumFmt,})if err != nil {fmt.Println(err)}f.SetCellStyle("Sheet1", "B4", "B4", styleId)f.SetCellValue("Sheet1","B4",12345)if err = f.SaveAs("sanGuo.xlsx"); err != nil {fmt.Println(err)}
}
  • 效果
    在这里插入图片描述

2. 样式使用

2.1 单元格使用样式

  • 语法
func (f *File) SetCellStyle(sheet string, hCell string, vCell string, styleID int) error

2.2 列使用样式

  • 语法
func (f *File) SetColStyle(sheet, columns string, styleID int) error
  • 语法示例
err = f.SetColStyle("Sheet1", "H", style)
err = f.SetColStyle("Sheet1", "C:F", style)

2.3 行使用样式

  • 语法
func (f *File) SetRowStyle(sheet string, start int, end int, styleID int) error
  • 语法示例
err = f.SetRowStyle("Sheet1", 1,3,style)

在这里插入图片描述

这篇关于Go语言excelize包-06-样式设置(样式设置、区间使用样式、行使用样式、列使用样式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/405343

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl