工作簿

Options 定义了打开电子表格的选项。

  1. type Options struct {
  2. Password string
  3. }

创建

  1. func NewFile() *File

使用 NewFile 新建 Excel 工作薄,新创建的工作簿中会默认包含一个名为 Sheet1 的工作表。

打开

  1. func OpenFile(filename string, opt ...Options) (*File, error)

使用 OpenFile 打开已有 Excel 文档。例如,打开带有密码保护的电子表格文档:

  1. f, err := excelize.OpenFile("Book1.xlsx", excelize.Options{Password: "password"})
  2. if err != nil {
  3. return
  4. }

请注意,目前 Excelize 支持解密带有密码保护的电子表格文档,但不支持加密,通过 Save()SaveAs() 保存后的电子表格文档将不受密码保护。

打开数据流

  1. func OpenReader(r io.Reader, opt ...Options) (*File, error)

OpenReader 从 io.Reader 读取数据流。

下面的例子中,我们创建一个简单的 HTTP 服务器接收上传的电子表格文档,向接收到的电子表格文档添加新工作表,并返回下载响应:

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/360EntSecGroup-Skylar/excelize/v2"
  6. )
  7. func process(w http.ResponseWriter, req *http.Request) {
  8. file, _, err := req.FormFile("file")
  9. if err != nil {
  10. fmt.Fprintf(w, err.Error())
  11. return
  12. }
  13. defer file.Close()
  14. f, err := excelize.OpenReader(file)
  15. if err != nil {
  16. fmt.Fprintf(w, err.Error())
  17. return
  18. }
  19. f.NewSheet("NewSheet")
  20. w.Header().Set("Content-Disposition", "attachment; filename=Book1.xlsx")
  21. w.Header().Set("Content-Type", req.Header.Get("Content-Type"))
  22. if _, err := f.WriteTo(w); err != nil {
  23. fmt.Fprintf(w, err.Error())
  24. }
  25. return
  26. }
  27. func main() {
  28. http.HandleFunc("/process", process)
  29. http.ListenAndServe(":8090", nil)
  30. }

使用 cURL 进行测试:

  1. curl --location --request GET 'http://127.0.0.1:8090/process' \
  2. --form '[email protected]/tmp/template.xlsx' -O -J
  3. curl: Saved to filename 'Book1.xlsx'

保存

  1. func (f *File) Save() error

使用 Save 保存对 Excel 文档的编辑。

另存为

  1. func (f *File) SaveAs(name string) error

使用 SaveAs 保存 Excel 文档为指定文件。

新建工作表

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

根据给定的工作表名称来创建新工作表,并返回工作表在工作簿中的索引。请注意,在创建新的工作簿时,将包含名为 Sheet1 的默认工作表。

删除工作表

  1. func (f *File) DeleteSheet(name string)

根据给定的工作表名称删除指定工作表,谨慎使用此方法,这将会影响到与被删除工作表相关联的公式、引用、图表等元素。如果有其他组件引用了被删除工作表上的值,将会引发错误提示,甚至将会导致打开工作簿失败。当工作簿中仅包含一个工作表时,调用此方法无效。

复制工作表

  1. func (f *File) CopySheet(from, to int) error

根据给定的被复制工作表与目标工作表索引复制工作表,目标工作表索引需要开发者自行确认是否已经存在。目前支持仅包含单元格值和公式的工作表间的复制,不支持包含表格、图片、图表和透视表等元素的工作表之间的复制。

  1. // 名称为 Sheet1 的工作表已经存在 ...
  2. index := f.NewSheet("Sheet2")
  3. err := f.CopySheet(1, index)
  4. return err

设置工作表背景图片

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

根据给定的工作表名称和图片地址为指定的工作表设置平铺效果的背景图片。

设置默认工作表

  1. func (f *File) SetActiveSheet(index int)

根据给定的索引值设置默认工作表,索引的值应该大于等于 0 且小于工作簿所包含的累积工作表总数。

获取默认工作表索引

  1. func (f *File) GetActiveSheetIndex() int

获取默认工作表的索引,如果没有找到默认工作表将返回 0

设置工作表可见性

  1. func (f *File) SetSheetVisible(name string, visible bool) error

根据给定的工作表名称和可见性参数设置工作表的可见性。一个工作簿中至少包含一个可见工作表。如果给定的工作表为默认工作表,则对其可见性设置无效。工作表可见性状态可参考工作表状态枚举:

工作表状态枚举
visible
hidden
veryHidden

例如,隐藏名为 Sheet1 的工作表:

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

获取工作表可见性

  1. func (f *File) GetSheetVisible(name string) bool

根据给定的工作表名称获取工作表可见性设置。例如,获取名为 Sheet1 的工作表可见性设置:

  1. f.GetSheetVisible("Sheet1")

设置工作表格式属性

  1. func (f *File) SetSheetFormatPr(sheet string, opts ...SheetFormatPrOptions) error

根据给定的工作表名称设置格式属性。

可选格式参数数据类型
BaseColWidthuint8
DefaultColWidthfloat64
DefaultRowHeightfloat64
CustomHeightbool
ZeroHeightbool
ThickTopbool
ThickBottombool

例如,设置名为 Sheet1 的工作表中行默认为隐藏:

设置工作表格式属性

  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. if err := f.SetSheetFormatPr("Sheet1", excelize.ZeroHeight(true)); err != nil {
  4. fmt.Println(err)
  5. }
  6. if err := f.SetRowVisible("Sheet1", 10, true); err != nil {
  7. fmt.Println(err)
  8. }
  9. f.SaveAs("Book1.xlsx")

获取工作表格式属性

  1. func (f *File) GetSheetFormatPr(sheet string, opts ...SheetFormatPrOptionsPtr) error

根据给定的工作表名称获取格式属性。

可选格式参数数据类型
BaseColWidthuint8
DefaultColWidthfloat64
DefaultRowHeightfloat64
CustomHeightbool
ZeroHeightbool
ThickTopbool
ThickBottombool

例子:

  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. var (
  4. baseColWidth excelize.BaseColWidth
  5. defaultColWidth excelize.DefaultColWidth
  6. defaultRowHeight excelize.DefaultRowHeight
  7. customHeight excelize.CustomHeight
  8. zeroHeight excelize.ZeroHeight
  9. thickTop excelize.ThickTop
  10. thickBottom excelize.ThickBottom
  11. )
  12. if err := f.GetSheetFormatPr(sheet,
  13. &baseColWidth,
  14. &defaultColWidth,
  15. &defaultRowHeight,
  16. &customHeight,
  17. &zeroHeight,
  18. &thickTop,
  19. &thickBottom,
  20. ); err != nil {
  21. fmt.Println(err)
  22. }
  23. fmt.Println("Defaults:")
  24. fmt.Println("- baseColWidth:", baseColWidth)
  25. fmt.Println("- defaultColWidth:", defaultColWidth)
  26. fmt.Println("- defaultRowHeight:", defaultRowHeight)
  27. fmt.Println("- customHeight:", customHeight)
  28. fmt.Println("- zeroHeight:", zeroHeight)
  29. fmt.Println("- thickTop:", thickTop)
  30. fmt.Println("- thickBottom:", thickBottom)

得到输出:

  1. Defaults:
  2. - baseColWidth: 0
  3. - defaultColWidth: 0
  4. - defaultRowHeight: 15
  5. - customHeight: false
  6. - zeroHeight: false
  7. - thickTop: false
  8. - thickBottom: false

设置工作表视图属性

  1. func (f *File) SetSheetViewOptions(name string, viewIndex int, opts ...SheetViewOption) error

根据给定的工作表名称、视图索引和视图参数设置工作表视图属性,viewIndex 可以是负数,如果是这样,则向后计数(-1 代表最后一个视图)。

可选视图参数类型
DefaultGridColorbool
RightToLeftbool
ShowFormulasbool
ShowGridLinesbool
ShowRowColHeadersbool
ZoomScalefloat64
TopLeftCellstring
ShowZerosbool
  • 例1:
  1. err = f.SetSheetViewOptions("Sheet1", -1, ShowGridLines(false))
  • 例2:
  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. if err := f.SetSheetViewOptions(sheet, 0,
  4. excelize.DefaultGridColor(false),
  5. excelize.RightToLeft(false),
  6. excelize.ShowFormulas(true),
  7. excelize.ShowGridLines(true),
  8. excelize.ShowRowColHeaders(true),
  9. excelize.ZoomScale(80),
  10. excelize.TopLeftCell("C3"),
  11. ); err != nil {
  12. fmt.Println(err)
  13. }
  14. var zoomScale excelize.ZoomScale
  15. fmt.Println("Default:")
  16. fmt.Println("- zoomScale: 80")
  17. if err := f.SetSheetViewOptions(sheet, 0, excelize.ZoomScale(500)); err != nil {
  18. fmt.Println(err)
  19. }
  20. if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil {
  21. fmt.Println(err)
  22. }
  23. fmt.Println("Used out of range value:")
  24. fmt.Println("- zoomScale:", zoomScale)
  25. if err := f.SetSheetViewOptions(sheet, 0, excelize.ZoomScale(123)); err != nil {
  26. fmt.Println(err)
  27. }
  28. if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil {
  29. fmt.Println(err)
  30. }
  31. fmt.Println("Used correct value:")
  32. fmt.Println("- zoomScale:", zoomScale)

得到输出:

  1. Default:
  2. - zoomScale: 80
  3. Used out of range value:
  4. - zoomScale: 80
  5. Used correct value:
  6. - zoomScale: 123

获取工作表视图属性

  1. func (f *File) GetSheetViewOptions(name string, viewIndex int, opts ...SheetViewOptionPtr) error

根据给定的工作表名称、视图索引和视图参数获取工作表视图属性,viewIndex 可以是负数,如果是这样,则向后计数(-1 代表最后一个视图)。

可选视图参数类型
DefaultGridColorbool
RightToLeftbool
ShowFormulasbool
ShowGridLinesbool
ShowRowColHeadersbool
ZoomScalefloat64
TopLeftCellstring
ShowZerosbool
  • 例1,获取名为 Sheet1 的工作表上最后一个视图的网格线属性设置:
  1. var showGridLines excelize.ShowGridLines
  2. err = f.GetSheetViewOptions("Sheet1", -1, &showGridLines)
  • 例2:
  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. var (
  4. defaultGridColor excelize.DefaultGridColor
  5. rightToLeft excelize.RightToLeft
  6. showFormulas excelize.ShowFormulas
  7. showGridLines excelize.ShowGridLines
  8. showZeros excelize.ShowZeros
  9. showRowColHeaders excelize.ShowRowColHeaders
  10. zoomScale excelize.ZoomScale
  11. topLeftCell excelize.TopLeftCell
  12. )
  13. if err := f.GetSheetViewOptions(sheet, 0,
  14. &defaultGridColor,
  15. &rightToLeft,
  16. &showFormulas,
  17. &showGridLines,
  18. &showZeros,
  19. &showRowColHeaders,
  20. &zoomScale,
  21. &topLeftCell,
  22. ); err != nil {
  23. fmt.Println(err)
  24. }
  25. fmt.Println("Default:")
  26. fmt.Println("- defaultGridColor:", defaultGridColor)
  27. fmt.Println("- rightToLeft:", rightToLeft)
  28. fmt.Println("- showFormulas:", showFormulas)
  29. fmt.Println("- showGridLines:", showGridLines)
  30. fmt.Println("- showZeros:", showZeros)
  31. fmt.Println("- showRowColHeaders:", showRowColHeaders)
  32. fmt.Println("- zoomScale:", zoomScale)
  33. fmt.Println("- topLeftCell:", `"`+topLeftCell+`"`)
  34. if err := f.SetSheetViewOptions(sheet, 0, excelize.TopLeftCell("B2")); err != nil {
  35. fmt.Println(err)
  36. }
  37. if err := f.GetSheetViewOptions(sheet, 0, &topLeftCell); err != nil {
  38. fmt.Println(err)
  39. }
  40. if err := f.SetSheetViewOptions(sheet, 0, excelize.ShowGridLines(false)); err != nil {
  41. fmt.Println(err)
  42. }
  43. if err := f.GetSheetViewOptions(sheet, 0, &showGridLines); err != nil {
  44. fmt.Println(err)
  45. }
  46. if err := f.SetSheetViewOptions(sheet, 0, excelize.ShowZeros(false)); err != nil {
  47. fmt.Println(err)
  48. }
  49. if err := f.GetSheetViewOptions(sheet, 0, &showZeros); err != nil {
  50. fmt.Println(err)
  51. }
  52. fmt.Println("After change:")
  53. fmt.Println("- showGridLines:", showGridLines)
  54. fmt.Println("- showZeros:", showZeros)
  55. fmt.Println("- topLeftCell:", topLeftCell)

得到输出:

  1. Default:
  2. - defaultGridColor: true
  3. - rightToLeft: false
  4. - showFormulas: false
  5. - showGridLines: true
  6. - showZeros: true
  7. - showRowColHeaders: true
  8. - zoomScale: 0
  9. - topLeftCell: ""
  10. After change:
  11. - showGridLines: false
  12. - showZeros: false
  13. - topLeftCell: B2

设置工作表页面布局

  1. func (f *File) SetPageLayout(sheet string, opts ...PageLayoutOption) error

根据给定的工作表名称和页面布局参数设置工作表的页面布局属性。目前支持设置的页面布局属性:

  • 通过 BlackAndWhite 方法设置单色打印 truefalse,默认值为 false 关闭。

  • 通过 FirstPageNumber 方法设置页面起始页码,默认为自动。

  • 通过 PageLayoutOrientation 方法设置页面布局方向,默认页面布局方向为“纵向”。下面的表格是 Excelize 中页面布局方向 PageLayoutOrientation 参数的列表:

参数方向
OrientationPortrait纵向
OrientationLandscape横向
  • 通过 PageLayoutPaperSize 方法设置页面纸张大小,默认页面布局大小为“信纸 8½ × 11 英寸”。下面的表格是 Excelize 中页面布局大小和索引 PageLayoutPaperSize 参数的关系对照:
索引纸张大小
1信纸 8½ × 11 英寸
2简式信纸 8½ × 11 英寸
3卡片 11 × 17 英寸
4账单 17 × 11 英寸
5律师公文纸 8½ × 14 英寸
6报告单 5½ × 8½ 英寸
7行政公文纸 7½ × 10 英寸
8A3 297 × 420 毫米
9A4 210 × 297 毫米
10A4(小) 210 × 297 毫米
11A5 148 × 210 毫米
12B4 250 × 353 毫米
13B5 176 × 250 毫米
14对开本 8½ × 13 英寸
15四开 215 × 275 毫米
16美式标准纸张 10 × 14 英寸
17美式标准纸张 11 × 17 英寸
18便签 8.5 × 11 英寸
19信封 #9 3.875 × 8.875 英寸
20信封 #10 4⅛ × 9½ 英寸
21信封 #11 4.5 × 10.375 英寸
22信封 #12 4.75 × 11 英寸
23信封 #14 5 × 11.5 英寸
24C paper 17 × 22 英寸
25D paper 22 × 34 英寸
26E paper 34 × 44 英寸
27信封 DL 110 × 220 毫米
28信封 C5 162 × 229 毫米
29信封 C3 324 × 458 毫米
30信封 C4 229 × 324 毫米
31信封 C6 114 × 162 毫米
32信封 C65 114 × 229 毫米
33信封 B4 250 × 353 毫米
34信封 B5 176 × 250 毫米
35信封 B6 176 × 125 毫米
36信封 Italy 110 × 230 毫米
37君主式信封 3.88 × 7.5 英寸
386¾ 信封 3.625 × 6.5 英寸
39美国标准 fanfold 14.875 × 11 英寸
40德国标准 fanfold 8.5 × 12 英寸
41德国法律专用纸 fanfold 8.5 × 13 英寸
42ISO B4 250 × 353 毫米
43日式明信片 100 × 148 毫米
44Standard paper 9 × 11 英寸
45Standard paper 10 × 11 英寸
46Standard paper 15 × 11 英寸
47邀请信 220 × 220 毫米
50信纸加大 9.275 × 12 英寸
51特大法律专用纸 9.275 × 15 英寸
52Tabloid extra paper 11.69 × 18 英寸
53A4 特大 236 × 322 毫米
54信纸横向旋转 8.275 × 11 英寸
55A4 横向旋转 210 × 297 毫米
56信纸特大横向旋转 9.275 × 12 英寸
57SuperA/SuperA/A4 paper 227 × 356 毫米
58SuperB/SuperB/A3 paper 305 × 487 毫米
59信纸加大 8.5 × 12.69 英寸
60A4 加大 210 × 330 毫米
61A5 横向旋转 148 × 210 毫米
62JIS B5 横向旋转 182 × 257 毫米
63A3 特大 322 × 445 毫米
64A5 特大 174 × 235 毫米
65ISO B5 特大 201 × 276 毫米
66A2 420 × 594 毫米
67A3 横向旋转 297 × 420 毫米
68A3 特大横向旋转 322 × 445 毫米
69双层日式明信片 200 × 148 毫米
70A6 105 × 148 毫米
71日式信封 Kaku #2
72日式信封 Kaku #3
73日式信封 Chou #3
74日式信封 Chou #4
75信纸横向旋转 11 × 8½ 英寸
76A3 横向旋转 420 × 297 毫米
77A4 横向旋转 297 × 210 毫米
78A5 横向旋转 210 × 148 毫米
79B4 (JIS) 横向旋转 364 × 257 毫米
80B5 (JIS) 横向旋转 257 × 182 毫米
81日式明信片 横向旋转 148 × 100 毫米
82双层日式明信片 横向旋转 148 × 200 毫米
83A6 横向旋转 148 × 105 毫米
84日式信封 Kaku #2 横向旋转
85日式信封 Kaku #3 横向旋转
86日式信封 Chou #3 横向旋转
87日式信封 Chou #4 横向旋转
88B6 (JIS) 128 × 182 毫米
89B6 (JIS) 横向旋转 182 × 128 毫米
9012 × 11 英寸
91日式信封 You #4
92日式信封 You #4 横向旋转
93中式 16 开 146 × 215 毫米
94中式 32 开 97 × 151 毫米
95中式大 32 开 97 × 151 毫米
96中式信封 #1 102 × 165 毫米
97中式信封 #2 102 × 176 毫米
98中式信封 #3 125 × 176 毫米
99中式信封 #4 110 × 208 毫米
100中式信封 #5 110 × 220 毫米
101中式信封 #6 120 × 230 毫米
102中式信封 #7 160 × 230 毫米
103中式信封 #8 120 × 309 毫米
104中式信封 #9 229 × 324 毫米
105中式信封 #10 324 × 458 毫米
106中式 16 开 横向旋转
107中式 32 开 横向旋转
108中式大 32 开 横向旋转
109中式信封 #1 横向旋转 165 × 102 毫米
110中式信封 #2 横向旋转 176 × 102 毫米
111中式信封 #3 横向旋转 176 × 125 毫米
112中式信封 #4 横向旋转 208 × 110 毫米
113中式信封 #5 横向旋转 220 × 110 毫米
114中式信封 #6 横向旋转 230 × 120 毫米
115中式信封 #7 横向旋转 230 × 160 毫米
116中式信封 #8 横向旋转 309 × 120 毫米
117中式信封 #9 横向旋转 324 × 229 毫米
118中式信封 #10 横向旋转 458 × 324 毫米
  • 通过 FitToHeight 方法设置页面缩放调整页宽,默认值为 1

  • 通过 FitToWidth 方法设置页面缩放调整页高,默认值为 1

  • 通过 PageLayoutScale 方法设置页面缩放比例,取值范围 10 至 400,即缩放 10% 至 400%,默认值为 100 正常尺寸。

  • 例如,将名为 Sheet1 的工作表页面布局设置为单色打印、起始页码为 2、横向、使用 A4(小) 210 × 297 毫米纸张、调整为 2 页宽、2 页高并缩放 50%:

  1. f := excelize.NewFile()
  2. if err := f.SetPageLayout(
  3. "Sheet1",
  4. excelize.BlackAndWhite(true),
  5. excelize.FirstPageNumber(2),
  6. excelize.PageLayoutOrientation(excelize.OrientationLandscape),
  7. excelize.PageLayoutPaperSize(10),
  8. excelize.FitToHeight(2),
  9. excelize.FitToWidth(2),
  10. excelize.PageLayoutScale(50),
  11. ); err != nil {
  12. fmt.Println(err)
  13. }

获取工作表页面布局

  1. func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error

根据给定的工作表名称和页面布局参数获取工作表的页面布局属性。

  • 通过 PageLayoutOrientation 方法获取页面布局方向
  • 通过 PageLayoutPaperSize 方法获取页面纸张大小

例如,获取名为 Sheet1 的工作表页面布局设置:

  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. var (
  4. orientation excelize.PageLayoutOrientation
  5. paperSize excelize.PageLayoutPaperSize
  6. )
  7. if err := f.GetPageLayout("Sheet1", &orientation); err != nil {
  8. fmt.Println(err)
  9. }
  10. if err := f.GetPageLayout("Sheet1", &paperSize); err != nil {
  11. fmt.Println(err)
  12. }
  13. fmt.Println("Defaults:")
  14. fmt.Printf("- orientation: %q\n", orientation)
  15. fmt.Printf("- paper size: %d\n", paperSize)

得到输出:

  1. Defaults:
  2. - orientation: "portrait"
  3. - paper size: 1

设置工作表页边距

  1. func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error

根据给定的工作表名称和页边距参数设置工作表的页边距。页边距可选参数:

参数数据类型
PageMarginBotomfloat64
PageMarginFooterfloat64
PageMarginHeaderfloat64
PageMarginLeftfloat64
PageMarginRightfloat64
PageMarginTopfloat64
  • 例如,设置名为 Sheet1 的工作表页边距:
  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. if err := f.SetPageMargins(sheet,
  4. excelize.PageMarginBottom(1.0),
  5. excelize.PageMarginFooter(1.0),
  6. excelize.PageMarginHeader(1.0),
  7. excelize.PageMarginLeft(1.0),
  8. excelize.PageMarginRight(1.0),
  9. excelize.PageMarginTop(1.0),
  10. ); err != nil {
  11. fmt.Println(err)
  12. }

获取工作表页边距

根据给定的工作表名称和页边距参数获取工作表的页边距。页边距可选参数:

参数数据类型
PageMarginBotomfloat64
PageMarginFooterfloat64
PageMarginHeaderfloat64
PageMarginLeftfloat64
PageMarginRightfloat64
PageMarginTopfloat64
  • 例如,获取名为 Sheet1 的工作表页边距:
  1. f := excelize.NewFile()
  2. const sheet = "Sheet1"
  3. var (
  4. marginBottom excelize.PageMarginBottom
  5. marginFooter excelize.PageMarginFooter
  6. marginHeader excelize.PageMarginHeader
  7. marginLeft excelize.PageMarginLeft
  8. marginRight excelize.PageMarginRight
  9. marginTop excelize.PageMarginTop
  10. )
  11. if err := f.GetPageMargins(sheet,
  12. &marginBottom,
  13. &marginFooter,
  14. &marginHeader,
  15. &marginLeft,
  16. &marginRight,
  17. &marginTop,
  18. ); err != nil {
  19. fmt.Println(err)
  20. }
  21. fmt.Println("Defaults:")
  22. fmt.Println("- marginBottom:", marginBottom)
  23. fmt.Println("- marginFooter:", marginFooter)
  24. fmt.Println("- marginHeader:", marginHeader)
  25. fmt.Println("- marginLeft:", marginLeft)
  26. fmt.Println("- marginRight:", marginRight)
  27. fmt.Println("- marginTop:", marginTop)

得到输出:

  1. Defaults:
  2. - marginBottom: 0.75
  3. - marginFooter: 0.3
  4. - marginHeader: 0.3
  5. - marginLeft: 0.7
  6. - marginRight: 0.7
  7. - marginTop: 0.75

设置页眉和页脚

  1. func (f *File) SetHeaderFooter(sheet string, settings *FormatHeaderFooter) error

根据给定的工作表名称和控制字符设置工作表的页眉和页脚。

页眉和页脚包含如下字段:

字段描述
AlignWithMargins设定页眉页脚页边距与页边距对齐
DifferentFirst设定第一页页眉和页脚
DifferentOddEven设定奇数和偶数页页眉和页脚
ScaleWithDoc设定页眉和页脚跟随文档缩放
OddFooter奇数页页脚控制字符
OddHeader奇数页页眉控制字符
EvenFooter偶数页页脚控制字符
EvenHeader偶数页页眉控制字符
FirstFooter首页页脚控制字符
FirstHeader首页页眉控制字符

下表中的格式代码可用于 6 个字符串类型字段: OddHeader, OddFooter, EvenHeader, EvenFooter, FirstFooter, FirstHeader

格式代码描述
&&字符 “&”
&font-size文本字体的大小, 其中字体大小为以磅为单位的十进制字体大小
&”font name,font type”文本字体名字符串、字体名称和文本字体类型字符串、字体类型
&”-,Regular”常规文本格式。关闭粗体和斜体模式
&A当前工作表名称
&B or &”-,Bold”粗体文本格式, 关闭或打开,默认关闭。
&D当前日期
&C中间部分
&E对文本使用双下划线
&F当前工作簿文件名称
&G将指定对象做为背景
&H文字阴影
&I or &”-,Italic”文字倾斜
&K字体颜色
格式为 RRGGBB 的 RGB 颜色
主题颜色被指定为 TTSNNN, 其中 TT 是主题颜色 id, S 是色调或阴影的 “+” 或者 “-“, 是色调或阴影的值
&L左侧部分
&N总页数
&O大纲文本格式
&P[[+|-]n]如果没有可选的后缀, 当前页码 (十进制)
&R右侧部分
&S文本删除线
&T当前时间
&U为文本添加单下划线。默认模式处于关闭状态
&X上标格式
&Y下标格式
&Z当前工作簿文件路径

例如:

  1. err := f.SetHeaderFooter("Sheet1", &excelize.FormatHeaderFooter{
  2. DifferentFirst: true,
  3. DifferentOddEven: true,
  4. OddHeader: "&R&P",
  5. OddFooter: "&C&F",
  6. EvenHeader: "&L&P",
  7. EvenFooter: "&L&D&R&T",
  8. FirstHeader: `&CCenter &"-,Bold"Bold&"-,Regular"HeaderU+000A&D`,
  9. })

上面的例子蕴含如下格式:

  • 第一页有自己的页眉和页脚
  • 奇数和偶数页具有不同的页眉和页脚
  • 奇数页标题右侧部分为当前页码
  • 奇数页页脚中心部分为当前工作簿的文件名
  • 偶数页标题左侧部分为当前页码
  • 左侧部分为当前日期,偶数页页脚右侧部分为当前时间
  • 第一页中心部分的第一行上的文本为“Center Bold Header”, 第二行为日期
  • 第一页上没有页脚

设置名称

  1. func (f *File) SetDefinedName(definedName *DefinedName) error

根据给定的名称和作范围设置名称,默认范围是工作簿。例如:

  1. f.SetDefinedName(&excelize.DefinedName{
  2. Name: "Amount",
  3. RefersTo: "Sheet1!$A$2:$D$5",
  4. Comment: "defined name comment",
  5. Scope: "Sheet2",
  6. })

工作表的打印区域和打印标题设置:

工作表的打印区域和打印标题设置

  1. f.SetDefinedName(&excelize.DefinedName{
  2. Name: "_xlnm.Print_Area",
  3. RefersTo: "Sheet1!$A$1:$Z$100",
  4. Scope: "Sheet1",
  5. })
  6. f.SetDefinedName(&excelize.DefinedName{
  7. Name: "_xlnm.Print_Titles",
  8. RefersTo: "Sheet1!$A:$A,Sheet1!$1:$1",
  9. Scope: "Sheet1",
  10. })

获取名称

  1. func (f *File) GetDefinedName() []DefinedName

获取作用范围内的工作簿和工作表的名称列表。

删除名称

  1. func (f *File) DeleteDefinedName(definedName *DefinedName) error

根据给定的名称和名称作用范围删除已定义的名称,默认名称的作用范围为工作簿。例如:

  1. f.DeleteDefinedName(&excelize.DefinedName{
  2. Name: "Amount",
  3. Scope: "Sheet2",
  4. })

设置工作簿属性

  1. func (f *File) SetDocProps(docProperties *DocProperties) error

设置工作簿的核心属性。 可以设置的属性包括:

属性描述
Title文档标题
Subject文档主题
Creator创作者
Keywords文档关键词
Description资源内容的说明
LastModifiedBy执行上次修改的用户
Language文档内容的主要语言
Identifier对给定上下文中的资源的明确引用
Revision文档修订版本
ContentStatus文档内容的状态。例如: 值可能包括 “Draft”、”Reviewed” 和 “Final”
Category文档内容的分类
Version版本号,该值由用户或应用程序设置

例如:

  1. err := f.SetDocProps(&excelize.DocProperties{
  2. Category: "category",
  3. ContentStatus: "Draft",
  4. Created: "2019-06-04T22:00:10Z",
  5. Creator: "Go Excelize",
  6. Description: "This file created by Go Excelize",
  7. Identifier: "xlsx",
  8. Keywords: "Spreadsheet",
  9. LastModifiedBy: "Go Author",
  10. Modified: "2019-06-04T22:00:10Z",
  11. Revision: "0",
  12. Subject: "Test Subject",
  13. Title: "Test Title",
  14. Language: "en-US",
  15. Version: "1.0.0",
  16. })

获取工作簿属性

  1. func (f *File) GetDocProps() (*DocProperties, error)

获取工作簿的核心属性。