介绍

xls xlsx区别

xls 是 03 版 Office Microsoft Office Excel 工作表的格式,用 03 版 Office,新建 Excel 默认保存的 Excel 文件格式的后缀是 .xls;

xlsx 是 07 版 Office Microsoft Office Excel 工作表的格式,用 07 版 Office,新建 Excel 默认保存的的 Excel 文件格式后缀是 .xlsx。

xls 是一个特有的二进制格式,其核心结构是复合文档类型的结构,而 xlsx 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此。

第三方库

Go 操作 Excel 需要引入第三方库,在这里介绍两个开源项目:

360EntSecGroup-Skylar/excelize

github 地址:
https://github.com/360EntSecGroup-Skylar/excelize

获取方式:

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

tealeg/xlsx

github 地址:
https://github.com/tealeg/xlsx

获取方式:

go get github.com/tealeg/xlsx

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

读取 XLSX 文件
下面给出一个读取文件实例:

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()}
}

XLSX 文件添加表格

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

XLSX 文件添加图片

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

tealeg/xlsx

读取 XLSX 文件

package mainimport ("fmt""github.com/tealeg/xlsx"
)func main() {excelFileName := "/home/tealeg/foo.xlsx"xlFile, err := xlsx.OpenFile(excelFileName)if err != nil {...}for _, sheet := range xlFile.Sheets {for _, row := range sheet.Rows {for _, cell := range row.Cells {text := cell.String()fmt.Printf("%s\n", text)}}}
}

写入 XLSX 文件

package mainimport ("fmt""github.com/tealeg/xlsx"
)func main() {var file *xlsx.Filevar sheet *xlsx.Sheetvar row *xlsx.Rowvar cell *xlsx.Cellvar err errorfile = xlsx.NewFile()sheet, err = file.AddSheet("Sheet1")if err != nil {fmt.Printf(err.Error())}row = sheet.AddRow()cell = row.AddCell()cell.Value = "I am a cell!"err = file.Save("MyXLSXFile.xlsx")if err != nil {fmt.Printf(err.Error())}
}

Go 语言 Excel相关推荐

  1. 【Unity编辑器扩展】语言国际化工具,生成多语言Excel自动翻译并导出多语言表

    工具效果如图: 多语言是个非常简单且常用的功能.但是重复工作量大,程序手动把多语言Key配置到多语言表经常会出现错漏,或者几经改版,有些Key已经不用却没有剔除,久而久之造成冗余.这中简单且重复的工作 ...

  2. python的openpyxl库如何读取特定列_Excelize 2.3.2 发布,Go 语言 Excel 文档基础库,2021 年首个更新...

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  3. go读取excel_Excelize 2.3.0 发布,Go 语言 Excel 文档基础库

    github.com/xuri/excelize Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可 ...

  4. go读取excel_Excelize发布2.1.0版本,Go语言Excel文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准.可以使用它来读取.写入由 Microsoft Excel ...

  5. c语言excel转pdf,基于C语言和Excel软件下光速测量仪测量玻璃折射率.pdf

    基于C语言和Excel软件下光速测量仪测量玻璃折射率.pdf 基于语言和 软件下光速测量仪测量玻璃折射率 朱承君 王奇峰 芦立娟 张艳春 ( 浙江海洋学院机电学院 浙江 舟山 ) ( 收稿日期 ) 摘 ...

  6. R语言EXCEL绘制瀑布图

    瀑布图是反映在诸多原因和因素下,使得一个状态演变成另一个状态的过程图表,这个过程中我们可以了解哪些是导致该变化结果的主要因素,以及产生影响的强弱,R语言中一共有三个包可以做,它们分别是waterfal ...

  7. C语言Excel表格指针,C语言操作Excel表格

    上网查找了好多的资料发现C语言不能操作Execl表格,说是比较用C++语言好操作,想了解更多请点此链接:C++操作Excel表格. 接下来介绍下一位学长介绍给我的方法,比较粗俗,但还是挺实用的. 第一 ...

  8. 天气预报小程序(go语言Excel)(未做完)

    excelize是Go语言编写的用于操作Office Excel文件基础库,可以使用它来读取,写入,支持XLSX/XLSM.XLTM等多种文档格式. Windows PowerShell Copyri ...

  9. 按比例算出成绩 用c语言,Excel按指定比例生成学生总分,并迭代计算出各学科分数...

    这篇博文题目很拗口,主要是因为这次做的表实在有点奇葩,很难用一两句话表达清楚.最近做个了个学生成绩表,不是真实存在的成绩,而是生成出来的,为了模拟得更像真的,费了不少力气.下面总结一下,备忘. 闲话少 ...

最新文章

  1. CodeBlocks主题和字体
  2. It Smells!不要让两个状态纠缠的类同时成为某个事件的观察者(一切都只是视图)...
  3. Bzoj 3680 吊打xxx【[模拟退火】
  4. 一位铁粉的分享:阿里面试归来总结面经,已成功斩获P6 offer...
  5. 展望Silverlight 5.0新版本更新与发展
  6. Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)
  7. tnsnames.ora 的编写
  8. Eclipse和debug的一些快捷键:F8一直执行到下一个断点。
  9. MAC设置JDK环境变量
  10. EndNoteX7中conference proceeding和conference paper的区别
  11. java实训心得体会3篇_java实训心得体会3篇
  12. java登陆注册界面_java编写登陆注册页面(简单一点的,连接数据库)
  13. Android应用优化之冷启动优化
  14. 经验:中小微企业网站上云怎样选择适合自己的云虚拟主机?
  15. 盘点 8 款好用的 API 接口文档管理工具
  16. 解决C/C++报错error: cannot pass objects of non-trivially-copyable type ‘std::string’问题
  17. ant jmeter 原理_Ant+Jmeter自动化接口测试
  18. CANoe.DiVa 操作指南 -TP层测试
  19. JavaScript 开发的45个技巧2
  20. 信息收集(六)之cms识别

热门文章

  1. 「AI激荡三十年」中的哈工大与王海峰:中国AI如何从贫瘠的孤岛,走向世界?...
  2. 大咖来信 | 微软中国CTO韦青:低代码/无代码时代来了,写代码的你准备好了吗?...
  3. MIT谷歌大脑用AI破解失传的古代文字,被称“现代版罗塞塔石碑”丨ACL 2019
  4. Dubbo发展史谁知道?
  5. 城市WiFi好看还应该好用
  6. 开源 java CMS - FreeCMS2.6 静态化管理
  7. php之常用字符串方法
  8. 查看Unix/Linux的CPU个数和内存大小,系统位数(转载)
  9. Javascript cookie使用详解
  10. SQLServer2008安装失败的解决办法