表单控件

《Excelize 权威指南》图书出版,网上购买方式:人民邮电出版社 |异步社区 |天猫 |京东 |当当 |微店 |抖音 |拼多多

FormControl 定义了表单控件的属性。

  1. type FormControl struct {
  2. Cell string
  3. Macro string
  4. Width uint
  5. Height uint
  6. Checked bool
  7. CurrentVal uint
  8. MinVal uint
  9. MaxVal uint
  10. IncChange uint
  11. PageChange uint
  12. Horizontally bool
  13. CellLink string
  14. Text string
  15. Paragraph []RichTextRun
  16. Type FormControlType
  17. Format GraphicOptions
  18. }

添加表单控件

  1. func (f *File) AddFormControl(sheet string, opts FormControl) error

AddFormControl 通过给定的工作表名称和表单控件选项在工作表中添加表单控件。支持的表单控件类型为:按钮、复选框、分组框、标签、选项按钮、滚动条和微调框(调节按钮)。若需要为表单控件指定宏,保存的工作簿扩展名应为 .xlsm 或者 .xltm。滚动值应介于 0 到 30000 之间。

例1,在 Sheet1!A2 单元格添加带有指定宏、富文本、自定义尺寸和属性的按钮表单控件:

使用 Excelize 在工作表中添加按钮表单控件

  1. enable := true
  2. err := f.AddFormControl("Sheet1", excelize.FormControl{
  3. Cell: "A2",
  4. Type: excelize.FormControlButton,
  5. Macro: "Button1_Click",
  6. Width: 140,
  7. Height: 60,
  8. Text: "Button 1\r\n",
  9. Paragraph: []excelize.RichTextRun{
  10. {
  11. Font: &excelize.Font{
  12. Bold: true,
  13. Italic: true,
  14. Underline: "single",
  15. Family: "Times New Roman",
  16. Size: 14,
  17. Color: "777777",
  18. },
  19. Text: "C1=A1+B1",
  20. },
  21. },
  22. Format: excelize.GraphicOptions{
  23. PrintObject: &enable,
  24. Positioning: "absolute",
  25. },
  26. })

例2,在 Sheet1!A1Sheet1!A2 单元格添加带有选中状态的选项按钮表单控件:

使用 Excelize 在工作表中添加选项按钮表单控件

  1. if err := f.AddFormControl("Sheet1", excelize.FormControl{
  2. Cell: "A1",
  3. Type: excelize.FormControlOptionButton,
  4. Text: "Option Button 1",
  5. Checked: true,
  6. Height: 20,
  7. }); err != nil {
  8. fmt.Println(err)
  9. }
  10. if err := f.AddFormControl("Sheet1", excelize.FormControl{
  11. Cell: "A2",
  12. Type: excelize.FormControlOptionButton,
  13. Text: "Option Button 2",
  14. Height: 20,
  15. }); err != nil {
  16. fmt.Println(err)
  17. }

例3,在 Sheet1!B1 单元格添加带有控制选项的微调框(调节按钮)来增大或减小 Sheet1!A1 单元格的值:

使用 Excelize 在工作表中添加微调框(调节按钮)表单控件

  1. err := f.AddFormControl("Sheet1", excelize.FormControl{
  2. Cell: "B1",
  3. Type: excelize.FormControlSpinButton,
  4. Width: 15,
  5. Height: 40,
  6. CurrentVal: 7,
  7. MinVal: 5,
  8. MaxVal: 10,
  9. IncChange: 1,
  10. CellLink: "A1",
  11. })

例4,在 Sheet1!A2 单元格添加水平滚动条,通过拖动滚动框输入或修改 Sheet1!A1 单元格的值:

使用 Excelize 在工作表中添加水平滚动条表单控件

  1. err := f.AddFormControl("Sheet1", excelize.FormControl{
  2. Cell: "A2",
  3. Type: excelize.FormControlScrollBar,
  4. Width: 140,
  5. Height: 20,
  6. CurrentVal: 50,
  7. MinVal: 10,
  8. MaxVal: 100,
  9. IncChange: 1,
  10. PageChange: 1,
  11. CellLink: "A1",
  12. Horizontally: true,
  13. })

获取表单控件

  1. func (f *File) GetFormControls(sheet string) ([]FormControl, error)

根据给定的工作表名称获取工作表中的全部表单控件。注意,该函数目前尚未支持获取表单控件的宽高。

删除表单控件

  1. func (f *File) DeleteFormControl(sheet, cell string) error

DeleteFormControl 通过给定的工作表名称和单元格坐标删除指定的表单控件。例如,删除位于 Sheet1!$A$1 单元格的表单控件:

  1. err := f.DeleteFormControl("Sheet1", "A1")