如何在Golang中生成带指定下拉选项列的CSV/Excel文件
在Golang中生成带下拉选项的Excel文件
CSV是纯文本格式,不支持单元格下拉这类富格式功能,因此要实现带指定下拉选项的需求,只能通过生成Excel文件来完成。
以下是实现代码,借助excelize库为指定列添加下拉选项:
package main import ( "fmt" "os" "github.com/xuri/excelize/v2" ) func main() { f := excelize.NewFile() defer func() { if err := f.Close(); err != nil { fmt.Println(err) } }() // 创建工作表 index, err := f.NewSheet("Sheet1") if err != nil { fmt.Println(err) return } // 写入表头 f.SetCellValue("Sheet1", "A1", "ID") f.SetCellValue("Sheet1", "B1", "Airline") f.SetCellValue("Sheet1", "C1", "Flight No") // 定义下拉选项列表 airlineOptions := []string{"AA", "DL", "UA", "BA", "LH"} // 拼接成Excel数据验证要求的格式 formula := "\"" + airlineOptions[0] for _, opt := range airlineOptions[1:] { formula += "," + opt } formula += "\"" // 为B列(Airline列)设置下拉验证,应用范围为B2到B100 err = f.SetSheetDataValidation("Sheet1", &excelize.DataValidation{ Type: "list", Formula1: formula, AllowBlank: true, Sqref: "B2:B100", }) if err != nil { fmt.Println(err) return } // 设置默认活动工作表 f.SetActiveSheet(index) // 保存生成的Excel文件 if err := f.SaveAs("flight_data.xlsx"); err != nil { fmt.Println(err) } }
实现效果
生成的Excel文件中,Airline列会显示指定的下拉选项,效果如下:
核心说明
- 需先通过
go get github.com/xuri/excelize/v2安装excelize库 - 通过
SetSheetDataValidation方法添加数据验证,将Type设为list即可实现下拉列表效果 Sqref参数用于指定规则应用的单元格范围,可根据实际需求调整覆盖的行数- 下拉选项需要拼接成带双引号的字符串格式,作为
Formula1的值传入
内容的提问来源于stack exchange,提问作者Sharath BJ
相关产品推荐
相关产品推荐

