Go 语言读写 Excel 1
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相关推荐
- Go 语言读写 Excel
Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准.可以使用它来读取.写入 XLSX 文件.相比较其他的 ...
- R读写Excel文件中数据的方法
用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒 ...
- c语言从excal读取字符串,C语言操作EXCEL文件(读写)
C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...
- python与r语言处理excel数据_R语言 | 读写txt、csv、excel文件
前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代码简洁.不过好几年不琢磨R语言,对R语言代码的凌 ...
- R语言心得说:R语言之xlsx包读写Excel数据
R语言心得说:R语言之xlsx包读写Excel数据 感谢Adrian A. Drǎgulescu发布的xlsx包 工具准备 [基础]简单读取excel文件数据 [基础]简单写入数据到excel文件 [ ...
- R语言 | 读写txt、csv、excel文件
[更新~] Python网络爬虫与文本数据分析 前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代 ...
- C语言操作EXCEL文件(读写)
C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...
- 数据分析从零开始实战,Pandas读写Excel/XML数据
点击查看第一篇文章: 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析_ 数据分析 从零开始到实战,Pandas读写CSV数据_ 数据分析 从零开始到实战,Pandas读写CSV数据 ...
- python pandas读取excel-Python使用Pandas读写EXCEL文件教程
欢迎,来自IP地址为:211.103.135.163 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel 是微软出品的和款办公软 ...
最新文章
- 整体关闭screen(转)
- Spring AOP通知实例 – Advice
- 工智能遇上银行反欺诈,到底能帮什么忙
- [原]逆向iOS SDK -- +[UIImage imageNamed:] 的实现
- Annotation processing seems to be disabled for the project microservicecloud
- oracle坏块修复
- Linux工作笔记040---Centos8.2安装mysql5.7.18_已经测试成功
- skip-gram模型介绍及代码
- vue ----vue-cli
- 月薪2w的00后女财务,靠这套报表模板征服了老板
- vuex中actions配合mutation处理axios请求
- getElementById和querySelector方法的区别
- 软件测试视频教程下载:APP测试类型和方法
- JAVA获取word书签内容_java操作word可操作书签
- 查询linux ssh端口,查看ssh端口
- html怎样修改背景图片大小,css中如何设置背景图片的大小?
- PowerBI自动切换中英文单位
- 计算机如何开启多个用户,电脑上如何打开多个微信账号?
- TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法
- Android实用代码大全
热门文章
- 关于安装双系统后为什么启动页面只有一个系统启动项
- POJ 1325 Kőnig's Theorem
- Command line is too long.Shorten the command line XXX
- 京东二面:内存耗尽后Redis会发生什么?
- libgdx, couldn't load shared library 'gdx' for target: Linux, 32-bit的终极解决方案
- python爬虫类型_Python爬虫:爬取国内所有高校名称、类型、官网
- react node服务器_适用于初学者的服务器上的React:构建通用的React和Node应用程序...
- Linux Mint 17 下安装搜狗拼音输入法
- 遇见 mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre 问题
- 小学计算机新课标测试题,2016小学数学新课标测试题及答案