最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go Excelize API源碼閱讀GetPageLayout及SetPageMargins

 更新時間:2022年08月18日 15:15:26   作者:丘山子  
這篇文章主要為大家介紹了Go Excelize API源碼閱讀GetPageLayout及SetPageMargins的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、Go-Excelize簡介

Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫,基于 ECMA-376,ISO/IEC 29500 國際標(biāo)準(zhǔn)。

  • 可以使用它來讀取、寫入由 Microsoft Excel™ 2007 及以上版本創(chuàng)建的電子表格文檔。
  • 支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復(fù)雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿。
  • 可應(yīng)用于各類報表平臺、云計算、邊緣計算等系統(tǒng)。

使用本類庫要求使用的 Go 語言為 1.15 或更高版本。

二、 GetPageLayout

func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error

根據(jù)給定的工作表名稱和頁面布局參數(shù)獲取工作表的頁面布局屬性。

  • 通過 PageLayoutOrientation 方法獲取頁面布局方向
  • 通過 PageLayoutPaperSize 方法獲取頁面紙張大小 例如,獲取名為 Sheet1 的工作表頁面布局設(shè)置:
f := excelize.NewFile()
const sheet = "Sheet1"
var (
    orientation excelize.PageLayoutOrientation
    paperSize   excelize.PageLayoutPaperSize
)
if err := f.GetPageLayout("Sheet1", &orientation); err != nil {
    fmt.Println(err)
}
if err := f.GetPageLayout("Sheet1", &paperSize); err != nil {
    fmt.Println(err)
}
fmt.Println("Defaults:")
fmt.Printf("- orientation: %q\n", orientation)
fmt.Printf("- paper size: %d\n", paperSize)

輸出結(jié)果如下:

Defaults:
- orientation: "portrait"
- paper size: 1

廢話少說,我們來看一看源碼:

// GetPageLayout provides a function to gets worksheet page layout.
//
// Available options:
//   PageLayoutOrientation(string)
//   PageLayoutPaperSize(int)
//   FitToHeight(int)
//   FitToWidth(int)
func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error {
	s, err := f.workSheetReader(sheet)
	if err != nil {
		return err
	}
	ps := s.PageSetUp
	for _, opt := range opts {
		opt.getPageLayout(ps)
	}
	return err
}

選項參數(shù)有4個,分別是PageLayoutOrientation(string)、PageLayoutPaperSize(int)、FitToHeight(int)、FitToWidth(int)。 源碼邏輯很簡單,讀取工作表,然后獲取工作表的PageSetUp字段,它是*xlsxPageSetUp類型的。

下圖是xlsxPageSetUp類型的具體情況??梢钥吹剿哂羞@么多結(jié)構(gòu)體成員變量。

然后是遍歷不定長變量opts,對于每個參數(shù)執(zhí)行對應(yīng)的操作。

....

如此,對每個參數(shù)都執(zhí)行相應(yīng)的方法之后,我們就將獲取到的值存在了參數(shù)之中,因為從頭到尾都是對參數(shù)的指針進行操作。

三、SetPageMargins

func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error

根據(jù)給定的工作表名稱和頁邊距參數(shù)設(shè)置工作表的頁邊距。頁邊距可選參數(shù):

參數(shù)數(shù)據(jù)類型
PageMarginBotomfloat64
PageMarginFooterfloat64
PageMarginHeaderfloat64
PageMarginLeftfloat64
PageMarginRightfloat64
PageMarginTopfloat64

例如,設(shè)置名為 Sheet1 的工作表頁邊距:

f := excelize.NewFile()
const sheet = "Sheet1"
if err := f.SetPageMargins(sheet,
    excelize.PageMarginBottom(1.0),
    excelize.PageMarginFooter(1.0),
    excelize.PageMarginHeader(1.0),
    excelize.PageMarginLeft(1.0),
    excelize.PageMarginRight(1.0),
    excelize.PageMarginTop(1.0),
); err != nil {
    fmt.Println(err)
}

該API源碼如下:

// SetPageMargins provides a function to set worksheet page margins.
//
// Available options:
//   PageMarginBottom(float64)
//   PageMarginFooter(float64)
//   PageMarginHeader(float64)
//   PageMarginLeft(float64)
//   PageMarginRight(float64)
//   PageMarginTop(float64)
func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error {
	s, err := f.workSheetReader(sheet)
	if err != nil {
		return err
	}
	pm := s.PageMargins
	if pm == nil {
		pm = new(xlsxPageMargins)
		s.PageMargins = pm
	}
	for _, opt := range opts {
		opt.setPageMargins(pm)
	}
	return err
}

先讀取工作表,然后獲取PageMargins字段。

如果這個字段為空,就新建一個xlsxPageMargins對象,給s.PageMargins。

	for _, opt := range opts {
		opt.setPageMargins(pm)
	}

然后對根據(jù)opt的類型,對pm指針進行操作。

等等...

一如既往的這些操作...

以上就是Go Excelize API源碼閱讀GetPageLayout及SetPageMargins的詳細內(nèi)容,更多關(guān)于Go Excelize API源碼閱讀的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文詳解Golang中consul的基本使用

    一文詳解Golang中consul的基本使用

    consul是一個開源服務(wù)注冊和服務(wù)發(fā)現(xiàn)的中心,可以用于微服務(wù)的注冊和服務(wù)之間的調(diào)用的發(fā)現(xiàn),幫助上游服務(wù)找到下游服務(wù)的具體ip:port或者是domain,也可以使用dns的方式讓consul幫你去做轉(zhuǎn)發(fā)。本文就來講講它的具體使用吧
    2023-03-03
  • Golang中 Slice的分析與使用源碼解析

    Golang中 Slice的分析與使用源碼解析

    這篇文章主要介紹了Golang 中 Slice的分析與使用(含源碼),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Golang中的int類型和uint類型到底有多大?

    Golang中的int類型和uint類型到底有多大?

    int和uint類型在我們?nèi)粘i_發(fā)中經(jīng)常會用到,但有個疑問就是這兩個類型有多大,通過各種嘗試最終得到了答案,所以下面這篇文章主要給大家介紹了關(guān)于Golang中的int類型和uint類型到底有多大的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • go語言LeetCode題解720詞典中最長的單詞

    go語言LeetCode題解720詞典中最長的單詞

    這篇文章主要為大家介紹了go語言LeetCode題解720詞典中最長的單詞,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Golang打印復(fù)雜結(jié)構(gòu)體兩種方法詳解

    Golang打印復(fù)雜結(jié)構(gòu)體兩種方法詳解

    在?Golang?語言開發(fā)中,我們經(jīng)常會使用結(jié)構(gòu)體類型,如果我們使用的結(jié)構(gòu)體類型的變量包含指針類型的字段,我們在記錄日志的時候,指針類型的字段的值是指針地址,將會給我們?debug?代碼造成不便
    2022-10-10
  • 三種Golang數(shù)組拷貝的實現(xiàn)方式與性能分析

    三種Golang數(shù)組拷貝的實現(xiàn)方式與性能分析

    在?Golang?中,有多種方式可以進行數(shù)組的拷貝,本文將對其中的三種方式進行性能分析,并比較它們的優(yōu)缺點,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • go mod包拉不下來的問題及解決方案

    go mod包拉不下來的問題及解決方案

    這篇文章主要介紹了go mod包拉不下來的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Go實現(xiàn)map轉(zhuǎn)json的示例詳解

    Go實現(xiàn)map轉(zhuǎn)json的示例詳解

    這篇文章主要為大家詳細介紹了如何利用Go語言實現(xiàn)map轉(zhuǎn)json的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • Golang單元測試與斷言編寫流程詳解

    Golang單元測試與斷言編寫流程詳解

    這篇文章主要介紹了Golang單元測試與斷言編寫流程,單元測試也是一個很重要的事情。單元測試是指在開發(fā)中,對一個函數(shù)或模塊的測試。其強調(diào)的是對單元進行測試
    2022-12-12
  • Golang?Mutex互斥鎖源碼分析

    Golang?Mutex互斥鎖源碼分析

    本篇文章,我們將一起來探究下Golang?Mutex底層是如何實現(xiàn)的,知其然,更要知其所以然。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-10-10

最新評論

台湾省| 博白县| 娄底市| 襄城县| 屯留县| 基隆市| 茌平县| 泽普县| 全南县| 庆阳市| 滦南县| 泰安市| 天台县| 舞阳县| 淄博市| 九寨沟县| 洮南市| 宁乡县| 江油市| 贡觉县| 山东| 台安县| 邯郸市| 肃北| 宝坻区| 商南县| 皋兰县| 连平县| 泰宁县| 凌海市| 凭祥市| 当涂县| 凌源市| 奎屯市| 勐海县| 宁蒗| 弥渡县| 甘南县| 达拉特旗| 台北市| 浙江省|