首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go-Excelize API源码阅读(十五)——SetSheetViewOptions

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

作者头像
Regan Yue
发布2022-09-20 15:01:55
发布2022-09-20 15:01:55
1K0
举报
文章被收录于专栏:ReganYue's BlogReganYue's Blog

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

开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。

不管你是开源萌新,还是希望更深度参与开源贡献的老兵,跟随“开源摘星计划”开启你的开源之旅,从一篇学习笔记、到一段代码的提交,不断挖掘自己的潜能,最终成长为开源社区的“闪亮之星”。

我们将同你一起,探索更多的可能性!

项目地址: WeOpen-Star:https://github.com/weopenprojects/WeOpen-Star

一、Go-Excelize简介

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

二、 SetSheetViewOptions
代码语言:javascript
复制
func (f *File) SetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOption) error

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

可选视图参数

类型

DefaultGridColor

bool

ShowFormulas

bool

ShowGridLines

bool

ShowRowColHeaders

bool

ShowZeros

bool

RightToLeft

bool

ShowRuler

bool

View

string

TopLeftCell

string

ZoomScale

float64

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

代码语言:javascript
复制
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 ZoomScale
fmt.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)

其输出结果如下:

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

废话少说,直接上源码:

代码语言:javascript
复制
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

代码语言:javascript
复制
	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语言相关源码的解读第十五篇,我会不断努力,给大家带来更多类似的文章,恳请大家不吝赐教。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go-Excelize API源码阅读(十五)——SetSheetViewOptions
    • 一、Go-Excelize简介
    • 二、 SetSheetViewOptions
    • 三、结语
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档