GitHub: github.com/360EntSecGroup-Skylar/excelize
中文文档: xuri.me/excelize/zh-hans
Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。

安装

go get github.com/360EntSecGroup-Skylar/excelize

创建 XLSX

package mainimport ("fmt""github.com/360EntSecGroup-Skylar/excelize"
)func main() {xlsx := excelize.NewFile()// Create a new sheet.index := xlsx.NewSheet("Sheet2")// Set value of a cell.xlsx.SetCellValue("Sheet2", "A2", "Hello world.")xlsx.SetCellValue("Sheet1", "B2", 100)// Set active sheet of the workbook.xlsx.SetActiveSheet(index)// Save xlsx file by the given path.err := xlsx.SaveAs("./Book1.xlsx")if err != nil {fmt.Println(err)}
}

读写已有文档

package mainimport ("fmt""github.com/360EntSecGroup-Skylar/excelize"
)func main() {xlsx, err := excelize.OpenFile("./Book1.xlsx")if err != nil {fmt.Println(err)return}// Get value from cell by given worksheet name and axis.cell := xlsx.GetCellValue("Sheet1", "B2")fmt.Println(cell)// Get all the rows in the Sheet1.rows := xlsx.GetRows("Sheet1")for _, row := range rows {for _, colCell := range row {fmt.Print(colCell, "\t")}fmt.Println()}
}

向 Excel 中插入图表

package mainimport ("fmt""github.com/360EntSecGroup-Skylar/excelize"
)func main() {categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}xlsx := excelize.NewFile()for k, v := range categories {xlsx.SetCellValue("Sheet1", k, v)}for k, v := range values {xlsx.SetCellValue("Sheet1", k, v)}xlsx.AddChart("Sheet1", "E1", `{"type":"col3DClustered","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"title":{"name":"Fruit 3D Clustered Column Chart"}}`)// Save xlsx file by the given path.err := xlsx.SaveAs("./Book1.xlsx")if err != nil {fmt.Println(err)}
}

向 Excel 中插入图片

package mainimport ("fmt"_ "image/gif"_ "image/jpeg"_ "image/png""github.com/360EntSecGroup-Skylar/excelize"
)func main() {xlsx, err := excelize.OpenFile("./Book1.xlsx")if err != nil {fmt.Println(err)return}// Insert a picture.err = xlsx.AddPicture("Sheet1", "A2", "./image1.png", "")if err != nil {fmt.Println(err)}// Insert a picture to worksheet with scaling.err = xlsx.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)if err != nil {fmt.Println(err)}// Insert a picture offset in the cell with printing support.err = xlsx.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`)if err != nil {fmt.Println(err)}// Save the xlsx file with the origin path.err = xlsx.Save()if err != nil {fmt.Println(err)}
}

还有其他一些功能,在这里就不一一列举了,详细使用文档以及获取后期的维护更新可以从项目的主页获取

github.com/360EntSecGroup-Skylar/excelize

读取Excel表格中的数据,并以URL类型的数据显示:

func readData() []map[string]string {result:=make([]map[string]string,1)xlsx, err := excelize.OpenFile("./Book1.xlsx")  //打开文件if err != nil {fmt.Println(err)return nil}// Get value from cell by given worksheet name and axis.cell := xlsx.GetCellValue("Sheet1", "B2")fmt.Println("包含数据的单元格为:", cell)// Get all the rows in the Sheet1.fmt.Println("----------------开发遍历数据--------------------")//str := ""rows := xlsx.GetRows("Sheet1") //获取所有行//data切片中数据格式为:[ map[0]="name",map[1]="age",...map[0]="jz",map[1]="23"...]data := make([]map[int]string, 1)  //定义一个切片,数据类型为mapcolumnNums := 0columnName := make([]string, 1)for _, row := range rows {for i, colCell := range row {tempMap := make(map[int]string)tempMap[i] = colCelldata = append(data, tempMap)columnNums = i}}count := 0for _, tempdata := range data {for index, tempMap := range tempdata {if count <= columnNums {  //获取表列名count++columnName = append(columnName, tempMap)continue} else {  //获取表内容//str += columnName[index+1] + "=" + tempMap + "&&"tempContent:=make(map[string]string,1)tempContent[columnName[index+1]]=tempMapresult= append(result, tempContent)}}}fmt.Println(result)return result
}

执行效果:

➢了解更多Go语言知识:https://study.163.com/course/introduction/1210620804.htm

Go 语言读写 Excel 1相关推荐

  1. Go 语言读写 Excel

    Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准.可以使用它来读取.写入 XLSX 文件.相比较其他的 ...

  2. R读写Excel文件中数据的方法

    用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒 ...

  3. c语言从excal读取字符串,C语言操作EXCEL文件(读写)

    C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...

  4. python与r语言处理excel数据_R语言 | 读写txt、csv、excel文件

    前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代码简洁.不过好几年不琢磨R语言,对R语言代码的凌 ...

  5. R语言心得说:R语言之xlsx包读写Excel数据

    R语言心得说:R语言之xlsx包读写Excel数据 感谢Adrian A. Drǎgulescu发布的xlsx包 工具准备 [基础]简单读取excel文件数据 [基础]简单写入数据到excel文件 [ ...

  6. R语言 | 读写txt、csv、excel文件

    [更新~] Python网络爬虫与文本数据分析 前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代 ...

  7. C语言操作EXCEL文件(读写)

    C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...

  8. 数据分析从零开始实战,Pandas读写Excel/XML数据

    点击查看第一篇文章: 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析_ 数据分析 从零开始到实战,Pandas读写CSV数据_ 数据分析 从零开始到实战,Pandas读写CSV数据 ...

  9. python pandas读取excel-Python使用Pandas读写EXCEL文件教程

    欢迎,来自IP地址为:211.103.135.163 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel  是微软出品的和款办公软 ...

最新文章

  1. 整体关闭screen(转)
  2. Spring AOP通知实例 – Advice
  3. 工智能遇上银行反欺诈,到底能帮什么忙
  4. [原]逆向iOS SDK -- +[UIImage imageNamed:] 的实现
  5. Annotation processing seems to be disabled for the project microservicecloud
  6. oracle坏块修复
  7. Linux工作笔记040---Centos8.2安装mysql5.7.18_已经测试成功
  8. skip-gram模型介绍及代码
  9. vue ----vue-cli
  10. 月薪2w的00后女财务,靠这套报表模板征服了老板
  11. vuex中actions配合mutation处理axios请求
  12. getElementById和querySelector方法的区别
  13. 软件测试视频教程下载:APP测试类型和方法
  14. JAVA获取word书签内容_java操作word可操作书签
  15. 查询linux ssh端口,查看ssh端口
  16. html怎样修改背景图片大小,css中如何设置背景图片的大小?
  17. PowerBI自动切换中英文单位
  18. 计算机如何开启多个用户,电脑上如何打开多个微信账号?
  19. TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法
  20. Android实用代码大全

热门文章

  1. 关于安装双系统后为什么启动页面只有一个系统启动项
  2. POJ 1325 Kőnig's Theorem
  3. Command line is too long.Shorten the command line XXX
  4. 京东二面:内存耗尽后Redis会发生什么?
  5. libgdx, couldn't load shared library 'gdx' for target: Linux, 32-bit的终极解决方案
  6. python爬虫类型_Python爬虫:爬取国内所有高校名称、类型、官网
  7. react node服务器_适用于初学者的服务器上的React:构建通用的React和Node应用程序...
  8. Linux Mint 17 下安装搜狗拼音输入法
  9. 遇见 mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre 问题
  10. 小学计算机新课标测试题,2016小学数学新课标测试题及答案