Golang生成Excel文档的方法步骤_第1页
Golang生成Excel文档的方法步骤_第2页
Golang生成Excel文档的方法步骤_第3页
Golang生成Excel文档的方法步骤_第4页
Golang生成Excel文档的方法步骤_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Golang生成Excel文档的方法步骤目录关于Excelize库

性能对比

安装

创建Excel文档

实际场景复现

创建工作表

删除默认创建的工作表

合并单元格

单元格样式

文字水平居中

给单元格设置纯色填充

Style结构体

参考文档基于数据生成Excel文档是一个很常见的需求,本文将介绍如何使用Go的Excelize库去生成Excel文档,以及一些具体场景下的代码实现。

关于Excelize库

Excelize是Go语言编写的用于操作OfficeExcel文档基础库,基于ECMA-376,ISO/IEC29500国际标准。可以使用它来读取、写入由MicrosoftExcel2007及以上版本创建的电子表格文档。支持XLSX/XLSM/XLTM/XLTX等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的Go语言为1.15或更高版本。

性能对比

下图是一些主要的开源Excel库在生成12800*50纯文本矩阵时的性能对比(OS:macOSMojaveversion10.14.4,CPU:3.4GHzIntelCorei5,RAM:16GB2400MHzDDR4,HDD:1TB),包括Go、Python、Java、PHP和NodeJS。

安装

最新的版本是v2.4.0:

goget/360EntSecGroup-Skylar/excelize/v2

创建Excel文档

下面的案例中,我们创建了一个Excel文档,并使用NewSheet方法新建了一个Sheet2工作表,Sheet1是默认创建的工作表,然后我们使用SetCellValue方法分别在Sheet2工作表的A2单元格和Sheet1表格的B2单元格设置值,并通过使用SetActiveSheet方法设置Sheet2工作表为默认的工作表,最终调用SaveAs方法将数据写入Excel文档中:

packagemain

import(

"fmt"

"/360EntSecGroup-Skylar/excelize/v2"

funcmain(){

f:=excelize.NewFile()

//创建一个工作表

index:=f.NewSheet("Sheet2")

//设置单元格的值

f.SetCellValue("Sheet2","A2","Helloworld.")

f.SetCellValue("Sheet1","B2",100)

//设置工作簿的默认工作表

f.SetActiveSheet(index)

//根据指定路径保存文件

iferr:=f.SaveAs("Book1.xlsx");err!=nil{

fmt.Println(err)

实际场景复现

创建工作表

工作表名称是大小写敏感的:

index:=f.NewSheet("Sheet2")

删除默认创建的工作表

默认创建的Excel文档是包含一个名为Sheet1的工作表,我们可能并不需要这个默认工作表,这个时候我们可以删除这个工作表:

f.DeleteSheet("Sheet1")

合并单元格

合并Sheet1工作表上F1:I2区域内的单元格:

excel.MergeCell("Sheet1","F1","I2")

单元格样式

给单元格设置样式会经常遇到,比如设置单元格的背景颜色,Excelize库提供下面两个方法进行设置单元格样式(NewStyle和SetCellStyle):

//通过给定的样式格式JSON或结构体的指针创建样式并返回样式索引。

//请注意,颜色需要使用RGB色域代码表示。

style,err:=f.NewStyle(`{

"border":[

"type":"left",

"color":"0000FF",

"style":3

"type":"top",

"color":"00FF00",

"style":4

"type":"bottom",

"color":"FFFF00",

"style":5

"type":"right",

"color":"FF0000",

"style":6

"type":"diagonalDown",

"color":"A020F0",

"style":7

"type":"diagonalUp",

"color":"A020F0",

"style":8

iferr!=nil{

fmt.Println(err)

err=f.SetCellStyle("Sheet1","D7","D7",style)

文字水平居中

文字水平居中需要用到Alignment样式结构体:

typeAlignmentstruct{

Horizontalstring`json:"horizontal"`

Indentint`json:"indent"`

JustifyLastLinebool`json:"justify_last_line"`

ReadingOrderuint64`json:"reading_order"`

RelativeIndentint`json:"relative_indent"`

ShrinkToFitbool`json:"shrink_to_fit"`

TextRotationint`json:"text_rotation"`

Verticalstring`json:"vertical"`

WrapTextbool`json:"wrap_text"`

水平居中只要设置Horizontal的值为center即可:

style,err:=f.NewStyle(`{"alignment":{"horizontal":"center"}}`)

iferr!=nil{

fmt.Println(err)

err=excel.SetCellStyle("Sheet1","B1","B1",style)

给单元格设置纯色填充

给单元格填充颜色会使用到Fill样式结构体:

typeFillstruct{

Typestring`json:"type"`

Patternint`json:"pattern"`

Color[]string`json:"color"`

Shadingint`json:"shading"`

Style结构体

从上面设置样式的代码中,我们可以发现border是一个数组,而alignment是一个结构体,这是由Style结构体决定的:

typeStylestruct{

Border[]Border`json:"border"`

FillFill`json:"fill"`

Font*Font`json:"font"`

Alignment*Alignment`json:"alignment"`

Protection*Protection`json:"protection"`

NumFmtint`json:"number_format"`

DecimalPlacesint`json:"decimal_places"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论