首頁 > 軟體

Go Excelize API原始碼閱讀SetSheetViewOptions範例解析

2022-08-17 22:00:31

一、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 代表最後一個檢視)。

可選檢視引數型別
DefaultGridColorbool
ShowFormulasbool
ShowGridLinesbool
ShowRowColHeadersbool
ShowZerosbool
RightToLeftbool
ShowRulerbool
Viewstring
TopLeftCellstring
ZoomScalefloat64

下面是一個該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)

其輸出結果如下:

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
}

先根據工作表檢視的索引取工作表檢視。

這個函數其實邏輯很簡單,就是判斷下標是不是合法的,然後直接返回就是的了,如果預設下標是合法的,那麼都不需要這個函數了直接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-Excelize API原始碼閱讀SetSheetViewOptions範例解析的詳細內容,更多關於Go-Excelize API原始碼閱讀的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com