Go?Excelize?API源碼閱讀SetSheetViewOptions示例解析
一、Go-Excelize簡介
Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫,基于 ECMA-376,ISO/IEC 29500 國際標準。
可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本創(chuàng)建的電子表格文檔。
支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復(fù)雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿。
可應(yīng)用于各類報表平臺、云計算、邊緣計算等系統(tǒng)。使用本類庫要求使用的 Go 語言為 1.15 或更高版本。
二、 SetSheetViewOptions
func (f *File) SetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOption) error
根據(jù)給定的工作表名稱、視圖索引和視圖參數(shù)設(shè)置工作表視圖屬性,viewIndex 可以是負數(shù),如果是這樣,則向后計數(shù)(-1 代表最后一個視圖)。
| 可選視圖參數(shù) | 類型 |
|---|---|
| DefaultGridColor | bool |
| ShowFormulas | bool |
| ShowGridLines | bool |
| ShowRowColHeaders | bool |
| ShowZeros | bool |
| RightToLeft | bool |
| ShowRuler | bool |
| View | string |
| TopLeftCell | string |
| ZoomScale | float64 |
下面是一個該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 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)
其輸出結(jié)果如下:
Default:
- zoomScale: 80
Used out of range value:
- zoomScale: 80
Used 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
}
先根據(jù)工作表視圖的索引取工作表視圖。

這個函數(shù)其實邏輯很簡單,就是判斷下標是不是合法的,然后直接返回就是的了,如果默認下標是合法的,那么都不需要這個函數(shù)了直接ws.SheetViews.SheetView[viewIndex].
然后再遍歷不定長參數(shù)opts
for _, opt := range opts {
opt.setSheetViewOption(view)
}
opt都是SheetViewOption interface類型,其下有一個函數(shù)。
- setSheetViewOption(view *xlsxSheetView)
此處我們使用的是這個函數(shù)....



邏輯都很簡單,就是將傳來的值處理成工作表視圖屬性能夠設(shè)置的值。
然后直接賦值傳遞過去。
下面介紹一下這些參數(shù)的含義:
- DefaultGridColor是一個SheetViewOption。它指定一個標志,指示使用應(yīng)用程序應(yīng)使用默認網(wǎng)格線顏色(取決于系統(tǒng))。覆蓋 colorId 中指定的任何顏色。
- ShowFormulas是一個SheetViewOption。它指定一個標志,指示此工作表是否應(yīng)顯示公式。
- ShowGridLines是一個SheetViewOption。它指定一個標志,指示此工作表是否應(yīng)顯示網(wǎng)格線。
- ShowRowColHeaders是一個SheetViewOption。它指定一個標志,指示工作表是否應(yīng)顯示行標題和列標題。
- ShowZeros是一個SheetViewOption。它指定一個標志,指示是否“在值為零的單元格中顯示零”。當使用公式引用另一個空單元格時,當標志為 true 時,引用的值變?yōu)?0。默認設(shè)置為 true。
- RightToLeft是一個SheetViewOption。它指定一個標志,指示工作表是否處于“從右到左”的顯示模式。在此模式下,列 A 位于最右側(cè),列 B ;位于列 A 的左側(cè)一列,依此類推。此外,單元格中的信息以從右到左的格式顯示。
- ShowRuler是一個SheetViewOption。它指定一個標志,指示此工作表應(yīng)顯示標尺。
- View是一個 SheetViewOption。它指定一個標志,指示工作表的顯示方式,默認情況下,它使用空字符串。
- TopLeftCell是一個SheetViewOption。它指定左上角可見單元格的位置 右下窗格中左上角可見單元格的位置(從左到右模式時)。
- ZoomScale是一個SheetViewOption。它為表示百分比值的當前視圖指定窗口縮放放大倍率。此屬性限制為介于 10 到 400 之間的值。
以上就是Go-Excelize API源碼閱讀SetSheetViewOptions示例解析的詳細內(nèi)容,更多關(guān)于Go-Excelize API源碼閱讀的資料請關(guān)注腳本之家其它相關(guān)文章!
- golang使用excelize庫操作excel文件的方法詳解
- Go語言操作Excel利器之excelize類庫詳解
- 如何使用?Go?和?Excelize?構(gòu)建電子表格
- Go Excelize API源碼閱讀GetPageLayout及SetPageMargins
- Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayout
- Go?Excelize?API源碼解析GetSheetFormatPr使用示例
- Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析
- go中Excelize處理excel表實現(xiàn)帶數(shù)據(jù)校驗的文件導(dǎo)出
相關(guān)文章
Go語言strconv包實現(xiàn)字符串和數(shù)值類型的相互轉(zhuǎn)換
這篇文章主要介紹了Go語言strconv包實現(xiàn)字符串和數(shù)值類型的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Golang空結(jié)構(gòu)體struct{}用途,你知道嗎
這篇文章主要介紹了Golang空結(jié)構(gòu)體struct{}用途,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

