这篇“怎么使用Go语言在电子表格中生成相关下拉列表”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Go语言在电子表格中生成相关下拉列表”文章吧。
Excelize 是一个用纯 Go 编写的库,提供了一组允许您写入和读取 XLSX / XLSM / XLTM 文件的函数。支持读取和写入 Microsoft Excel™ 2007 及更高版本生成的电子表格文档。以高兼容性支持复杂组件,并提供流式API,用于从海量数据的工作表中生成或读取数据。这个库需要 Go 1.15 或更高版本。
Go:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
// create a new spreadsheet
f := excelize.NewFile()
var (
// cell values
data = [][]interface{}{
{"Fruits", "Vegetables"},
{"Mango", "Potato", nil, "Drop Down 1", "Drop Down 2"},
{"Apple", "Tomato"},
{"Grapes", "Spinach"},
{"Strawberry", "Onion"},
{"Kiwi", "Cucumber"},
}
addr string
err error
cellsStyle, headerStyle int
)
// set each cell value
for r, row := range data {
if addr, err = excelize.JoinCellName("A", r+1); err != nil {
fmt.Println(err)
return
}
if err = f.SetSheetRow("Sheet1", addr, &row); err != nil {
fmt.Println(err)
return
}
}
// set data validation
dvRange1 := excelize.NewDataValidation(true)
dvRange1.Sqref = "D3:D3"
dvRange1.SetSqrefDropList("$A$1:$B$1", true)
if err = f.AddDataValidation("Sheet1", dvRange1); err != nil {
fmt.Println(err)
return
}
dvRange2 := excelize.NewDataValidation(true)
dvRange2.Sqref = "E3:E3"
dvRange2.SetSqrefDropList("INDIRECT(D3)", true)
if err = f.AddDataValidation("Sheet1", dvRange2); err != nil {
fmt.Println(err)
return
}
// set defined name
if err = f.SetDefinedName(&excelize.DefinedName{
Name: "Fruits",
RefersTo: "Sheet1!$A$2:$A$6",
Scope: "Sheet1",
}); err != nil {
fmt.Println(err)
return
}
if err = f.SetDefinedName(&excelize.DefinedName{
Name: "Vegetables",
RefersTo: "Sheet1!$B$2:$B$6",
Scope: "Sheet1",
}); err != nil {
fmt.Println(err)
return
}
// set custom column width
for col, width := range map[string]float64{
"A": 12, "B": 12, "C": 6, "D": 12, "E": 12} {
if err = f.SetColWidth("Sheet1", col, col, width); err != nil {
fmt.Println(err)
return
}
}
// hide gridlines for the worksheet
if err = f.SetSheetViewOptions("Sheet1", 0,
excelize.ShowGridLines(false)); err != nil {
fmt.Println(err)
return
}
// define the border style
border := []excelize.Border{
{Type: "top", Style: 1, Color: "cccccc"},
{Type: "left", Style: 1, Color: "cccccc"},
{Type: "right", Style: 1, Color: "cccccc"},
{Type: "bottom", Style: 1, Color: "cccccc"},
}
// define the style of cells
if cellsStyle, err = f.NewStyle(&excelize.Style{
Font: &excelize.Font{Color: "333333"},
Border: border}); err != nil {
fmt.Println(err)
return
}
// define the style of the header row
if headerStyle, err = f.NewStyle(&excelize.Style{
Font: &excelize.Font{Bold: true},
Fill: excelize.Fill{
Type: "pattern", Color: []string{"dae9f3"}, Pattern: 1},
Border: border},
); err != nil {
fmt.Println(err)
return
}
// set cell style
if err = f.SetCellStyle("Sheet1", "A2", "B6", cellsStyle); err != nil {
fmt.Println(err)
return
}
if err = f.SetCellStyle("Sheet1", "D3", "E3", cellsStyle); err != nil {
fmt.Println(err)
return
}
// set cell style for the header row
if err = f.SetCellStyle("Sheet1", "A1", "B1", headerStyle); err != nil {
fmt.Println(err)
return
}
if err = f.SetCellStyle("Sheet1", "D2", "E2", headerStyle); err != nil {
fmt.Println(err)
return
}
// save spreadsheet file
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
以上就是关于“怎么使用Go语言在电子表格中生成相关下拉列表”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。