Golang操作Excel的模块Excelize学习总结-设置样式

更新时间:2023-05-16 21:53:19 阅读: 评论:0

Golang操作Excel的模块Excelize学习总结-设置样式
设置样式
新建样式
func (f *File) NewStyle(style interface{}) (int, error)
通过给定的样式格式 JSON 或结构体的指针创建样式并返回样式索引。请注意,颜⾊需要使⽤ RGB ⾊域代码表⽰。
设置样式
func (f *File) SetCellStyle(sheet, hcell, vcell string, styleID int) error
样式结构体包含的设置项
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"`
}
边框
type Border struct{
Type  string`json:"type"`// top bottom left right diagonalDown diagonalUp
Color string`json:"color"`// 常⽤的颜⾊字符串以及⼗六进制的颜⾊编  red  #F8F8F8
Style int`json:"style"`// 见下表样式可以去⽂档上看
}
索引线条样式线宽0⽆0
1连续线1
2连续线2
3短线1
4点线1
5连续线3
6双线3
7连续线0
8短线2
9短线与点间隔线1 10短线与点间隔线2 11短线与两个点⼀组重复线1 12短线与两个点⼀组重复线2 13斜线与点线2
13斜线与点线2
小班观察笔记
索引线条样式线宽填充
type Fill struct{
Type    string`json:"type"`// gradient  pattern
Pattern int`json:"pattern"`
Color  []string`json:"color"`
Shading int`json:"shading"`
}
填充有两种类型 即 Type 有两种选择 gradient -> 渐变⾊ pattern -> 填充图案
当Type是 gradient 时,Shading 可以选择 0-5 分别代表标横向(每种颜⾊横向分布),纵向,纵向 对⾓向上 对⾓向下 有外向内 由内向外;此时的Color 切⽚中的颜⾊可以有多个,Pattern 可以忽略
当Type是 pattern 时,Pattern 可选 0-18 其中 1是实体填充 ;Color 切⽚中只要⼀种;Shading可以不填
只有上述两种组合,其他的组合都不显⽰填充颜⾊
字体
type Font struct{
Bold      bool`json:"bold"`// 是否加粗
Italic    bool`json:"italic"`// 是否倾斜
Underline string`json:"underline"`// single    double
Family    string`json:"family"`// 字体样式
Size      float64`json:"size"`// 字体⼤⼩
Strike    bool`json:"strike"`// 删除线
Color    string`json:"color"`// 字体颜⾊
蝙蝠的英语>正方形面积计算公式}
注意字体是指针类型的
保护
type Protection struct{
Hidden bool`json:"hidden"`
Locked bool`json:"locked"`
}
貌似没⽤,待进⼀步学习
对齐
type Alignment struct{
Horizontal      string`json:"horizontal"`// ⽔平对齐⽅式
Indent          int`json:"indent"`// 缩进只要设置了值,就变成了左对齐
JustifyLastLine bool`json:"justify_last_line"`// 两端分散对齐,只有在⽔平对齐选择 distributed 时起作⽤
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"`// ⾃动换⾏
}
对齐⽅式也是指针类型
多个样式设置在同⼀个单元格,后⾯的会覆盖前⾯的
推荐使⽤JSON字符串的⽅式创建
Al_style, err := wb.NewStyle(`{"alignment":{
"horizontal":"center",
"vertical":"center"
}}`)
if err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"F6","F6", Al_style); err !=nil{
fmt.Println(err)
}
练习案例:
package main
import(
"fmt"
"/xuri/excelize/v2"
)
func main(){
// wb := excelize.NewFile()
wb, err := excelize.OpenFile("../excel_files/TMP_05.xlsx")
if err !=nil{
fmt.Println(err)
return
}
sheetName := wb.GetSheetName(wb.GetActiveSheetIndex())
sty_idx, err := wb.NewStyle(&excelize.Style{
Border:[]excelize.Border{
{
Type:"right",// top bottom left right diagonalDown diagonalUp 中的⼀个
Color:"#000000",// ⼗六进制的颜⾊编码
Style:2,// 0-13 有对应的样式
},
{
Type:"left",
Color:"#000000",
Style:2,
},
{
Type:"top",
Color:"#000000",
Style:2,
},
{
Type:"bottom",
Color:"#000000",
Style:2,
},
}, Fill: excelize.Fill{
Type:"gradient",// gradient 渐变⾊    pattern  填充图案
// Pattern: 1,                  // 填充样式当类型是 pattern 0-18 填充图案  1 实体填充
// Pattern: 1,                  // 填充样式当类型是 pattern 0-18 填充图案  1 实体填充
// Color:  []string{"#FF0000"}, // 当Type = pattern 时,只有⼀个
Color:[]string{"#00F700","#00F700"},
Shading:1,// 类型是 gradient 使⽤ 0-5 横向(每种颜⾊横向分布) 纵向对⾓向上对⾓向下有外向内由内向外
}, Font:&excelize.Font{
Bold:true,
// Italic: fal,
// Underline: "single",
Size:14,
Family:"宋体",
// Strike:    true, // 删除线
Color:"#0000FF",
}, Alignment:&excelize.Alignment{
Horizontal:"center",// ⽔平对齐⽅式 center left right fill(填充) justify(两端对齐)  centerContinuous(跨列居中) distributed(分散对齐)  Vertical:"center",// 垂直对齐⽅式 center top  justify distributed
// Indent:    1,        // 缩进只要有值就变成了左对齐 + 缩进
// TextRotation: 30, // 旋转
// RelativeIndent:  10,  // 好像没啥⽤
// ReadingOrder:    0,    // 不知道怎么设置
// JustifyLastLine: true, // 两端分散对齐,只有⽔平对齐为 distributed 时设置true 才有效
关于奋斗的名言// WrapText:        true, // ⾃动换⾏
// ShrinkToFit:    true, // 缩⼩字体以填充单元格
吴承恩的名人名言
}, Protection:&excelize.Protection{
Hidden:true,// 貌似没啥⽤
Locked:true,// 貌似没啥⽤
}, NumFmt:0,// 内置的数字格式样式  0-638  常⽤的 0-58  配合lang使⽤,因为语⾔不同样式不同具体的样式参照⽂档
Lang:"zh-cn",// zh-cn 中⽂
DecimalPlaces:2,// ⼩数位数只有NumFmt是 2-11 有效
// CustomNumFmt: "",// ⾃定义样式是指针,只能通过变量的⽅式
NegRed:true,// 不知道具体的含义
})
if err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"A1","B3", sty_idx); err !=nil{
fmt.Println(err)
return
}
// 除了以Go语⾔的⽅式传参外,还⽀持JSON格式的传参
// 边框样式
border_sty, err := wb.NewStyle(`{"border":[
{"type":"top","color":"#000000","style":1},
{"type":"left","color":"#000000","style":1},
{"type":"right","color":"#000000","style":1},
{"type":"bottom","color":"#000000","style":1}
]}`)
if err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"D2","G10", border_sty); err !=nil{
fmt.Println(err)
}
// 字体样式
// 链接的字体样式下划线 + 蓝⾊
font_link_sty, err := wb.NewStyle(`{"font":{"underline":"single","size":12,"color":"#0000FF","family":"仿宋"}}`)
if err !=nil{
fmt.Println(err)
}
fmt.Println(font_link_sty)
if err := wb.SetCellValue(sheetName,"F6","这是链接"); err !=nil{
fmt.Println(err)
}
颤动
if err := wb.SetCellHyperLink(sheetName,"F6","Sheet1!A1","Location"); err !=nil{
if err := wb.SetCellHyperLink(sheetName,"F6","Sheet1!A1","Location"); err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"F6","F6", font_link_sty); err !=nil{
fmt.Println(err)
}
styleIdx, err := wb.GetCellStyle(sheetName,"F6")
if err !=nil{
fmt.Println(err)
}
fmt.Println(styleIdx)
// 对齐⽅式
廖承志Al_style, err := wb.NewStyle(`{"alignment":{
"horizontal":"center",
"vertical":"center"
}}`)
if err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"F6","F6", Al_style); err !=nil{
fmt.Println(err)
}
// 多个样式设置在同⼀个单元格,后⾯的会覆盖前⾯的
link_sty, err := wb.NewStyle(`{
"border":[
{"type":"top","color":"#000000","style":1},
{"type":"left","color":"#000000","style":1},
{"type":"right","color":"#000000","style":1},
{"type":"bottom","color":"#000000","style":1}
],
"font":{
"underline":"single",
"size":12,
"color":"#0000FF",
"family":"仿宋"
},
"alignment":{
"horizontal":"center",
"vertical":"center"
}
}`)
狗为什么要断尾
if err !=nil{
fmt.Println(err)
}
if err := wb.SetCellStyle(sheetName,"D11","D11", link_sty); err !=nil{
fmt.Println(err)
}
if err := wb.SetCellValue(sheetName,"D11","这是链接"); err !=nil{
fmt.Println(err)
}
if err := wb.SetCellHyperLink(sheetName,"D11","","External"); err !=nil{  fmt.Println(err)
}
wb.Save()
// wb.SaveAs("../excel_files/TMP_05.xlsx")
}

本文发布于:2023-05-16 21:53:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/659249.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:样式   填充   设置   指针   字体
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图