工作表

设置列可见性

  1. func (f *File) SetColVisible(sheet, col string, visible bool) error

根据给定的工作表名称(大小写敏感)和列名称设置列可见性。例如隐藏名为 Sheet1 工作表上的 D 列:

  1. err := f.SetColVisible("Sheet1", "D", false)

隐藏名称为 Sheet1 的工作表中的 DF 列:

  1. err := f.SetColVisible("Sheet1", "D:F", false)

设置列宽度

  1. func (f *File) SetColWidth(sheet, startcol, endcol string, width float64) error

根据给定的工作表名称(大小写敏感)、列范围和宽度值设置单个或多个列的宽度。例如设置名为 Sheet1 工作表上 AH 列的宽度为 20

  1. f := excelize.NewFile()
  2. err := f.SetColWidth("Sheet1", "A", "H", 20)

设置行高度

  1. func (f *File) SetRowHeight(sheet string, row int, height float64) error

根据给定的工作表名称(大小写敏感)、行号和高度值设置单行高度。例如设置名为 Sheet1 工作表首行的高度为 50

  1. err := f.SetRowHeight("Sheet1", 1, 50)

设置行可见性

  1. func (f *File) SetRowVisible(sheet string, row int, visible bool) error

根据给定的工作表名称(大小写敏感)和行号设置行可见性。例如隐藏名为 Sheet1 工作表上第二行:

  1. err := f.SetRowVisible("Sheet1", 2, false)

获取工作表名

  1. func (f *File) GetSheetName(index int) string

根据给定的工作表索引获取工作表名称,如果工作表不存在将返回空字符。

获取列可见性

  1. func (f *File) GetColVisible(sheet, column string) (bool, error)

根据给定的工作表名称(大小写敏感)和列名获取工作表中指定列的可见性,可见返回值为 true,否则为 false。例如,获取名为 Sheet1 的工作表上 D 列的可见性:

  1. visible, err := f.GetColVisible("Sheet1", "D")

获取列宽度

  1. func (f *File) GetColWidth(sheet, col string) (float64, error)

根据给定的工作表和列名获取工作表中指定列的宽度。

获取行高度

  1. func (f *File) GetRowHeight(sheet string, row int) (float64, error)

根据给定的工作表名称(大小写敏感)和行号获取工作表中指定行的高度。例如,获取名为 Sheet1 的工作表首行的高度:

  1. height, err := f.GetRowHeight("Sheet1", 1)

获取行可见性

  1. func (f *File) GetRowVisible(sheet string, row int) (bool, error)

根据给定的工作表名称(大小写敏感)和行号获取工作表中指定行的可见性。例如,获取名为 Sheet1 的工作表第 2 行的可见性:

  1. err := f.GetRowVisible("Sheet1", 2)

获取工作表索引

  1. func (f *File) GetSheetIndex(name string) int

根据给定的工作表名称(大小写敏感)获取该工作表的索引,如果工作表不存在将返回 -1

获取到的索引可以在设置工作簿默认工作表时,作为调用 SetActiveSheet() 函数的参数使用。

获取工作表映射表

  1. func (f *File) GetSheetMap() map[int]string

获取工作簿中以 ID 和名称构成的全部工作表、图表工作表和对话工作表映射表。

  1. f, err := excelize.OpenFile("./Book1.xlsx")
  2. if err != nil {
  3. return
  4. }
  5. for index, name := range f.GetSheetMap() {
  6. fmt.Println(index, name)
  7. }

获取工作表列表

  1. func (f *File) GetSheetList() []string

获取与工作簿内顺序相一致的,包含工作表、图表工作表、对话工作表在内的工作表列表。

设置工作表名称

  1. func (f *File) SetSheetName(oldName, newName string)

根据给定的新旧工作表名称(大小写敏感)重命名工作表。工作表名称最多允许使用 31 个字符,此功能仅更改工作表的名称,而不会更新与单元格关联的公式或引用中的工作表名称。因此使用此功能重命名工作表后可能导致公式错误或参考引用问题。

设置工作表属性

  1. func (f *File) SetSheetPrOptions(name string, opts ...SheetPrOption) error

根据给定的工作表名称(大小写敏感)和筛选项设置工作表属性。

可选属性列表:

可选属性类型
CodeNamestring
EnableFormatConditionsCalculationbool
Publishedbool
FitToPagebool
TabColorstring
AutoPageBreaksbool
OutlineSummaryBelowbool

例如:

  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. if err := f.SetSheetPrOptions(sheet,
  4. excelize.CodeName("code"),
  5. excelize.EnableFormatConditionsCalculation(false),
  6. excelize.Published(false),
  7. excelize.FitToPage(true),
  8. excelize.TabColor("#FFFF00"),
  9. excelize.AutoPageBreaks(true),
  10. excelize.OutlineSummaryBelow(false),
  11. ); err != nil {
  12. fmt.Println(err)
  13. }

获取工作表属性

  1. func (f *File) GetSheetPrOptions(name string, opts ...SheetPrOptionPtr) error

根据给定的工作表名称(大小写敏感)和筛选项获取工作表属性。

可选属性类型
CodeNamestring
EnableFormatConditionsCalculationbool
Publishedbool
FitToPagebool
TabColorstring
AutoPageBreaksbool
OutlineSummaryBelowbool

例如:

  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. var (
  4. codeName excelize.CodeName
  5. enableFormatConditionsCalculation excelize.EnableFormatConditionsCalculation
  6. published excelize.Published
  7. fitToPage excelize.FitToPage
  8. tabColor excelize.TabColor
  9. autoPageBreaks excelize.AutoPageBreaks
  10. outlineSummaryBelow excelize.OutlineSummaryBelow
  11. )
  12. if err := f.GetSheetPrOptions(sheet,
  13. &codeName,
  14. &enableFormatConditionsCalculation,
  15. &published,
  16. &fitToPage,
  17. &tabColor,
  18. &autoPageBreaks,
  19. &outlineSummaryBelow,
  20. ); err != nil {
  21. fmt.Println(err)
  22. }
  23. fmt.Println("Defaults:")
  24. fmt.Printf("- codeName: %q\n", codeName)
  25. fmt.Println("- enableFormatConditionsCalculation:", enableFormatConditionsCalculation)
  26. fmt.Println("- published:", published)
  27. fmt.Println("- fitToPage:", fitToPage)
  28. fmt.Printf("- tabColor: %q\n", tabColor)
  29. fmt.Println("- autoPageBreaks:", autoPageBreaks)
  30. fmt.Println("- outlineSummaryBelow:", outlineSummaryBelow)

输出:

  1. Defaults:
  2. - codeName: ""
  3. - enableFormatConditionsCalculation: true
  4. - published: true
  5. - fitToPage: false
  6. - tabColor: ""
  7. - autoPageBreaks: false
  8. - outlineSummaryBelow: true

插入列

  1. func (f *File) InsertCol(sheet, column string) error

根据给定的工作表名称(大小写敏感)和列名称,在指定列前插入空白列。例如,在名为 Sheet1 的工作表的 C 列前插入空白列:

  1. err := f.InsertCol("Sheet1", "C")

插入行

  1. func (f *File) InsertRow(sheet string, row int) error

根据给定的工作表名称(大小写敏感)和行号,在指定行前插入空白行。例如,在名为 Sheet1 的工作表的第 3 行前插入空白行:

  1. err := f.InsertRow("Sheet1", 3)

追加复制行

  1. func (f *File) DuplicateRow(sheet string, row int) error

根据给定的工作表名称(大小写敏感)和行号,在该行后追加复制。例如,将名为 Sheet1 的工作表的第 2 行复制到第 3 行:

  1. err := f.DuplicateRow("Sheet1", 2)

请谨慎使用此方法,这将影响所有对该工作表中原有公式、图表等资源引用的更改。如果该工作表包含任何引用值,在使用此方法后使用 Excel 应用程序打开它时将可能导致文件错误。excelize 目前仅支持对工作表上部分引用的更新。

复制行

  1. func (f *File) DuplicateRowTo(sheet string, row, row2 int) error

根据给定的工作表名称(大小写敏感)和行号,在指定行后复制该行。例如,将名为 Sheet1 的工作表的第 2 行后复制到第 7 行:

  1. err := f.DuplicateRowTo("Sheet1", 2, 7)

请谨慎使用此方法,这将影响所有对该工作表中原有公式、图表等资源引用的更改。如果该工作表包含任何引用值,在使用此方法后使用 Excel 应用程序打开它时将可能导致文件错误。excelize 目前仅支持对工作表上部分引用的更新。

创建行的分级显示

  1. func (f *File) SetRowOutlineLevel(sheet string, row int, level uint8) error

根据给定的工作表名称(大小写敏感)、行号和分级参数创建组。例如,在名为 Sheet1 的工作表的第 2 行创建 1 级分组。

创建行的分级显示

  1. err := f.SetRowOutlineLevel("Sheet1", 2, 1)

创建列的分级显示

  1. func (f *File) SetColOutlineLevel(sheet, col string, level uint8) error

根据给定的工作表名称(大小写敏感)、列名称和分级参数创建组。例如,在名为 Sheet1 的工作表的 D 列创建 2 级分组。

创建列的分级显示

  1. err := f.SetColOutlineLevel("Sheet1", "D", 2)

获取行的分级显示

  1. func (f *File) GetRowOutlineLevel(sheet string, row int) (uint8, error)

根据给定的工作表名称(大小写敏感)和行号获取分组级别。例如,获取名为 Sheet1 的工作表第 2 行的分组级别。

  1. err := f.GetRowOutlineLevel("Sheet1", 2)

获取列的分级显示

  1. func (f *File) GetColOutlineLevel(sheet, col string) (uint8, error)

根据给定的工作表名称(大小写敏感)和列名称获取分组分级。例如,获取名为 Sheet1 的工作表的 D 列的分组级别。

  1. level, err := f.GetColOutlineLevel("Sheet1", "D")

列迭代器

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

根据给定的工作表名称(大小写敏感)获取该工作表的列迭代器。使用列迭代器进行流式读取遍历单元格:

  1. cols, err := f.Cols("Sheet1")
  2. if err != nil {
  3. fmt.Println(err)
  4. return
  5. }
  6. for cols.Next() {
  7. col, err := cols.Rows()
  8. if err != nil {
  9. fmt.Println(err)
  10. }
  11. for _, rowCell := range col {
  12. fmt.Print(rowCell, "\t")
  13. }
  14. fmt.Println()
  15. }

列迭代器 - 单列操作

  1. func (cols *Cols) Rows() ([]string, error)

返回当前列所有行的值。

列迭代器 - 遍历操作

  1. func (cols *Cols) Next() bool

如果下一列有值存在将返回 true

列迭代器 - 错误处理

  1. func (cols *Cols) Error() error

当查找下一列出现错误时将返回 error

行迭代器

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

根据给定的工作表名称(大小写敏感)获取该工作表的行迭代器。使用行迭代器进行流式读取遍历单元格:

  1. rows, err := f.Rows("Sheet1")
  2. if err != nil {
  3. fmt.Println(err)
  4. return
  5. }
  6. for rows.Next() {
  7. row, err := rows.Columns()
  8. if err != nil {
  9. fmt.Println(err)
  10. }
  11. for _, colCell := range row {
  12. fmt.Print(colCell, "\t")
  13. }
  14. fmt.Println()
  15. }

行迭代器 - 单行操作

  1. func (rows *Rows) Columns() ([]string, error)

返回当前行所有列的值。

行迭代器 - 遍历操作

  1. func (rows *Rows) Next() bool

如果下一行有值存在将返回 true

行迭代器 - 错误处理

  1. func (rows *Rows) Error() error

当查找下一行出现错误时将返回 error

在工作表中搜索

  1. func (f *File) SearchSheet(sheet, value string, reg ...bool) ([]string, error)

根据给定的工作表名称(大小写敏感),单元格值或正则表达式来获取坐标。此函数仅支持字符串和数字的完全匹配,不支持公式计算后的结果、格式化数字和条件搜索。如果搜索结果是合并的单元格,将返回合并区域左上角的坐标。

例如,在名为 Sheet1 的工作表中搜索值 100 的坐标:

  1. result, err := f.SearchSheet("Sheet1", "100")

例如,在名为 Sheet1 的工作表中搜索 0-9 范围内数值的坐标:

  1. result, err := f.SearchSheet("Sheet1", "[0-9]", true)

保护工作表

  1. func (f *File) ProtectSheet(sheet string, settings *FormatSheetProtection) error

防止其他用户意外或有意更改、移动或删除工作表中的数据。例如,将名为 Sheet1 的工作表设置密码保护,但是允许选择锁定的单元格、选择未锁定的单元格、编辑方案:

保护工作表

  1. err := f.ProtectSheet("Sheet1", &excelize.FormatSheetProtection{
  2. Password: "password",
  3. EditScenarios: false,
  4. })

取消保护工作表

  1. func (f *File) UnprotectSheet(sheet string) error

根据给定的工作表名称(大小写敏感)取消保护该工作表。

删除列

  1. func (f *File) RemoveCol(sheet, col string) error

根据给定的工作表名称(大小写敏感)和列名称删除指定列。例如,删除名为 Sheet1C 列:

  1. err := f.RemoveCol("Sheet1", "C")

请谨慎使用此方法,这将影响所有对该工作表中原有公式、图表等资源引用的更改。如果该工作表包含任何引用值,在使用此方法后使用 Excel 应用程序打开它时将可能导致文件错误。excelize 目前仅支持对工作表上部分引用的更新。

删除行

  1. func (f *File) RemoveRow(sheet string, row int) error

根据给定的工作表名称(大小写敏感)和行号删除指定行。例如,删除名为 Sheet1 的第 3 行:

  1. err := f.RemoveRow("Sheet1", 3)

请谨慎使用此方法,这将影响所有对该工作表中原有公式、图表等资源引用的更改。如果该工作表包含任何引用值,在使用此方法后使用 Excel 应用程序打开它时将可能导致文件错误。excelize 目前仅支持对工作表上部分引用的更新。

按行赋值

  1. func (f *File) SetSheetRow(sheet, axis string, slice interface{}) error

根据给定的工作表名称(大小写敏感)、起始坐标和 slice 类型引用按行赋值。例如,在名为 Sheet1 的工作簿第 6 行上,以 B6 单元格作为起始坐标按行赋值:

  1. err := f.SetSheetRow("Sheet1", "B6", &[]interface{}{"1", nil, 2})

插入分页符

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

根据给定的工作表名称和单元格坐标插入分页符。分页符是将工作表分成单独的页面以便打印的分隔线。

删除分页符

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

根据给定的工作表名称和单元格坐标删除分页符。