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

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是