欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go Excelize API源碼閱讀GetPageLayout及SetPageMargins

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

一、Go-Excelize簡(jiǎn)介

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

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

使用本類庫(kù)要求使用的 Go 語(yǔ)言為 1.15 或更高版本。

二、 GetPageLayout

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

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

  • 通過(guò) PageLayoutOrientation 方法獲取頁(yè)面布局方向
  • 通過(guò) PageLayoutPaperSize 方法獲取頁(yè)面紙張大小 例如,獲取名為 Sheet1 的工作表頁(yè)面布局設(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

廢話少說(shuō),我們來(lái)看一看源碼:

// 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
}

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

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

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

....

如此,對(duì)每個(gè)參數(shù)都執(zhí)行相應(yīng)的方法之后,我們就將獲取到的值存在了參數(shù)之中,因?yàn)閺念^到尾都是對(duì)參數(shù)的指針進(jìn)行操作。

三、SetPageMargins

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

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

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

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

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字段。

如果這個(gè)字段為空,就新建一個(gè)xlsxPageMargins對(duì)象,給s.PageMargins。

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

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

等等...

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

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

相關(guān)文章

  • go語(yǔ)言在請(qǐng)求http時(shí)加入自定義http header的方法

    go語(yǔ)言在請(qǐng)求http時(shí)加入自定義http header的方法

    這篇文章主要介紹了go語(yǔ)言在請(qǐng)求http時(shí)加入自定義http header的方法,實(shí)例分析了Go語(yǔ)言http請(qǐng)求的原理與操作技巧,需要的朋友可以參考下
    2015-03-03
  • go語(yǔ)言的變量定義示例詳解

    go語(yǔ)言的變量定義示例詳解

    這篇文章主要為大家介紹了go語(yǔ)言的變量定義示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 如何使用騰訊云go sdk 查詢對(duì)象存儲(chǔ)中最新文件

    如何使用騰訊云go sdk 查詢對(duì)象存儲(chǔ)中最新文件

    這篇文章主要介紹了使用騰訊云go sdk 查詢對(duì)象存儲(chǔ)中最新文件,這包括如何創(chuàng)建COS客戶端,如何逐頁(yè)檢索對(duì)象列表,并如何對(duì)結(jié)果排序以找到最后更新的對(duì)象,我們還展示了如何優(yōu)化用戶體驗(yàn),通過(guò)實(shí)時(shí)進(jìn)度更新和檢索多個(gè)文件來(lái)改進(jìn)程序,需要的朋友可以參考下
    2024-03-03
  • Go語(yǔ)言之嵌入類型詳解

    Go語(yǔ)言之嵌入類型詳解

    本文詳細(xì)講解了Go語(yǔ)言之嵌入類型,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 在Golang中執(zhí)行Shell命令的教程詳解

    在Golang中執(zhí)行Shell命令的教程詳解

    在本教程中,我們將學(xué)習(xí)如何在 Golang 中執(zhí)行shell命令(如 ls、mkdir 或 grep ),我們還將學(xué)習(xí)如何通過(guò) stdin 和 stdout 傳遞 I/O 到正在運(yùn)行的命令,以及管理長(zhǎng)時(shí)間運(yùn)行的命令,感興趣的同學(xué)可以借鑒一下
    2023-05-05
  • 詳解Golang使用MongoDB通用操作

    詳解Golang使用MongoDB通用操作

    這篇文章主要介紹了詳解Golang使用MongoDB通用操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Go內(nèi)存分配之結(jié)構(gòu)體優(yōu)化技巧

    Go內(nèi)存分配之結(jié)構(gòu)體優(yōu)化技巧

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言內(nèi)存分配之結(jié)構(gòu)體優(yōu)化技巧的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • go值賦值和引用賦值的使用

    go值賦值和引用賦值的使用

    本文將介紹Go語(yǔ)言中的值賦值和引用賦值,并比較它們之間的差異,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Golang中如何使用lua進(jìn)行擴(kuò)展詳解

    Golang中如何使用lua進(jìn)行擴(kuò)展詳解

    這篇文章主要給大家介紹了關(guān)于Golang中如何使用lua進(jìn)行擴(kuò)展的相關(guān)資料,這是最近在工作中遇到的一個(gè)問(wèn)題,覺(jué)著有必要分享出來(lái)給大家學(xué)習(xí),文中給出了詳細(xì)的示例,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • go mod 安裝依賴 unkown revision問(wèn)題的解決方案

    go mod 安裝依賴 unkown revision問(wèn)題的解決方案

    這篇文章主要介紹了go mod 安裝依賴 unkown revision問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05

最新評(píng)論