網站首頁 編程語言 正文
一、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 代表最后一個視圖)。
可選視圖參數 | 類型 |
---|---|
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)
其輸出結果如下:
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 之間的值。
原文鏈接:https://juejin.cn/post/7132377607424704519
相關推薦
- 2022-03-07 axios和ajax的區別點總結_AJAX相關
- 2022-03-03 uniapp的報錯ncaught Error: Module build failed (from
- 2022-03-30 ASP.NET?Core使用JWT自定義角色并實現策略授權需要的接口_實用技巧
- 2022-10-14 scikit-learn工具包中分類模型predict_proba、predict、decision
- 2022-06-28 一文搞懂Python中的進程,線程和協程_python
- 2022-03-19 基于React?Hooks的小型狀態管理詳解_React
- 2022-09-11 Shell之免交互的實現_linux shell
- 2022-06-14 .NET?Core(.NET6)中gRPC使用實踐_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支