写点什么

Go-Excelize API 源码阅读(十五)——SetSheetViewOptions

作者:Regan Yue
  • 2022 年 8 月 20 日
    湖南
  • 本文字数:2015 字

    阅读完需:约 7 分钟

Go-Excelize API源码阅读(十五)——SetSheetViewOptions

Go-Excelize API 源码阅读(十五)——SetSheetViewOptions

一、Go-Excelize 简介

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。

二、 SetSheetViewOptions

func (f *File) SetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOption) error
复制代码


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



下面是一个该 API 的使用例子:


f := excelize.NewFile()const sheet = "Sheet1"
if err := f.SetSheetViewOptions(sheet, 0, excelize.DefaultGridColor(false), excelize.ShowFormulas(true), excelize.ShowGridLines(true), excelize.ShowRowColHeaders(true), excelize.RightToLeft(false), excelize.ShowRuler(false), excelize.View("pageLayout"), excelize.TopLeftCell("C3"), excelize.ZoomScale(80),); err != nil { fmt.Println(err)}
var zoomScale ZoomScalefmt.Println("Default:")fmt.Println("- zoomScale: 80")
if err := f.SetSheetViewOptions(sheet, 0, excelize.ZoomScale(500)); err != nil { fmt.Println(err)}
if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil { fmt.Println(err)}
fmt.Println("Used out of range value:")fmt.Println("- zoomScale:", zoomScale)
if err := f.SetSheetViewOptions(sheet, 0, excelize.ZoomScale(123)); err != nil { fmt.Println(err)}
if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil { fmt.Println(err)}
fmt.Println("Used correct value:")fmt.Println("- zoomScale:", zoomScale)
复制代码


其输出结果如下:


Default:- zoomScale: 80Used out of range value:- zoomScale: 80Used correct value:- zoomScale: 123
复制代码


废话少说,直接上源码:


func (f *File) SetSheetViewOptions(name string, viewIndex int, opts ...SheetViewOption) error {  view, err := f.getSheetView(name, viewIndex)  if err != nil {    return err  }
for _, opt := range opts { opt.setSheetViewOption(view) } return nil}
复制代码


先根据工作表视图的索引取工作表视图。



这个函数其实逻辑很简单,就是判断下标是不是合法的,然后直接返回就是的了,如果默认下标是合法的,那么都不需要这个函数了直接 ws.SheetViews.SheetView[viewIndex].


然后再遍历不定长参数 opts


  for _, opt := range opts {    opt.setSheetViewOption(view)  }
复制代码


opt 都是 SheetViewOption interface 类型,其下有一个函数。


  • setSheetViewOption(view *xlsxSheetView)


此处我们使用的是这个函数....





逻辑都很简单,就是将传来的值处理成工作表视图属性能够设置的值。


然后直接赋值传递过去。


下面介绍一下这些参数的含义:


DefaultGridColor 是一个 SheetViewOption。它指定一个标志,指示使用应用程序应使用默认网格线颜色(取决于系统)。覆盖 colorId 中指定的任何颜色。


ShowFormulas 是一个 SheetViewOption。它指定一个标志,指示此工作表是否应显示公式。


ShowGridLines 是一个 SheetViewOption。它指定一个标志,指示此工作表是否应显示网格线。


ShowRowColHeaders 是一个 SheetViewOption。它指定一个标志,指示工作表是否应显示行标题和列标题。


ShowZeros 是一个 SheetViewOption。它指定一个标志,指示是否“在值为零的单元格中显示零”。当使用公式引用另一个空单元格时,当标志为 true 时,引用的值变为 0。默认设置为 true。


RightToLeft 是一个 SheetViewOption。它指定一个标志,指示工作表是否处于“从右到左”的显示模式。在此模式下,列 A 位于最右侧,列 B ;位于列 A 的左侧一列,依此类推。此外,单元格中的信息以从右到左的格式显示。


ShowRuler 是一个 SheetViewOption。它指定一个标志,指示此工作表应显示标尺。


View 是一个 SheetViewOption。它指定一个标志,指示工作表的显示方式,默认情况下,它使用空字符串。


TopLeftCell 是一个 SheetViewOption。它指定左上角可见单元格的位置 右下窗格中左上角可见单元格的位置(从左到右模式时)。


ZoomScale 是一个 SheetViewOption。它为表示百分比值的当前视图指定窗口缩放放大倍率。此属性限制为介于 10 到 400 之间的值。

三、结语

这里是老岳,这是 Go 语言相关源码的解读第十五篇,我会不断努力,给大家带来更多类似的文章,恳请大家不吝赐教。

发布于: 刚刚阅读数: 3
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

对Go、Python、网络安全、区块链感兴趣. · 华为云云享专家 · 掘金资讯创作者

评论

发布
暂无评论
Go-Excelize API源码阅读(十五)——SetSheetViewOptions_Go_Regan Yue_InfoQ写作社区