Golang操作Excel的模块Excelize – 设置单元格的值

  • 新建excel文件
    excelize.NewFile()

  • 获取当前活动的sheet页索引
    func (f *File) GetActiveSheetIndex() (index int)

  • 指定单元格设置值
    func (f *File) SetCellValue(sheet, axis string, value interface{}) error

  • 指定单元格设置值,常规不转码
    func (f *File) SetCellDefault(sheet, axis, value string) error

  • 设置单元格的值 字符串
    func (f *File) SetCellStr(sheet, axis, value string) error

  • 设置单元格的值 布尔
    func (f *File) SetCellBool(sheet, axis string, value bool) error

  • 设置单元格的值 浮点型

    第三个参数是值,必须是float64类型的,第四个是小数点的位数,第五个是32或者64,原始的数据是float32就是32,是float64就是64

    func (f *File) SetCellFloat(sheet, axis string, value float64, prec, bitSize int) error

  • 设置单元格的值 整数
    func (f *File) SetCellInt(sheet, axis string, value int) error

  • 设置单元格的值 公式
    func (f *File) SetCellFormula(sheet, axis, formula string, opts ...FormulaOpts) error

  • 设置链接 linkType -> Location 本地文件 -> External 外部链接,跳转页面

    只是设置链接,不会设置显示的值,也不会设置样式

    func (f *File) SetCellHyperLink(sheet, axis, link, linkType string, opts ...HyperlinkOpts) error

  • 插入行 插入列 插入的那一行/列的索引就是当前传的参数 传入的就是当前行的索引,从1/A开始的
    func (f *File) InsertRow(sheet string, row int) error
    func (f *File) InsertCol(sheet, col string) error

  • 追加复制的行,就是把当前行在下方在插入
    func (f *File) DuplicateRow(sheet string, row int) error

  • 复制指定行到指定行 把row行复制到row2行
    func (f *File) DuplicateRowTo(sheet string, row, row2 int) error

  • 删除行/列
    func (f *File) RemoveRow(sheet string, row int) error
    func (f *File) RemoveCol(sheet, col string) error

  • 在指定sheet页查询满足正则的单元格

    搜索到的单元格是满足字符匹配的 也就是说,满足unicode编码的单元格
    func (f *File) SearchSheet(sheet, value string, reg ...bool) ([]string, error)

  • 设置工作表(sheet页)的名称
    func (f *File) SetSheetName(oldName, newName string)

  • 通过切片生成整行的数据 第三个参数是切片的指针
    func (f *File) SetSheetRow(sheet, axis string, slice interface{}) error

  • 行列索引与单元格坐标的转换
    func excelize.JoinCellName(col string, row int) (string, error)行列索引转单元格坐标
    func excelize.SplitCellName(cell string) (string, int, error) 单元格转列行索引

  • 合并单元格
    func (*excelize.File).MergeCell(sheet string, hcell string, vcell string) error 后面两个参数是起始单元格坐标和结束单元格的坐标

    获取到的合并单元格的所有基础单元格的值都是一样的,不知道是不是excel版本的问题,待确认

代码:main.go

package mainimport ("fmt""github.com/xuri/excelize/v2"
)func main() {f := excelize.NewFile()f.Path = "../excel_files/TMP_02.xlsx"// 获取当前活动sheet页的索引sheet_idx := f.GetActiveSheetIndex()sheetName := f.GetSheetName(sheet_idx)// 设置单元格的值// 在excel中SetCellValue设置的值都是常规模式f.SetCellValue(sheetName, "A1", "字符串")f.SetCellValue(sheetName, "A2", 200)f.SetCellValue(sheetName, "A3", true)f.SetCellStr(sheetName, "B1", "这是SetCellStr")f.SetCellBool(sheetName, "B3", true)f.SetCellFloat(sheetName, "B2", 100.00200, 3, 64) // 第三个参数是值,必须是float64类型的,第四个是小数点的位数,第五个是32或者64,原始的数据是float32就是32,是float64就是64f.SetCellInt(sheetName, "B4", 100000)             // 整数f.SetCellDefault(sheetName, "C1", "这是SetCellDefault")// 设置单个单元格的公式f.SetCellFormula(sheetName, "C2", "B2+A2")// 链接只会做链接,不会给单元格赋值,需要单独设置值和样式f.SetCellHyperLink(sheetName, "D1", "https://www.baidu.com", "External")f.SetCellValue(sheetName, "D1", "链接1External")f.SetCellHyperLink(sheetName, "D2", "Sheet1!A1", "Location")f.SetCellValue(sheetName, "D2", "链接2Location")// 插入行f.InsertRow(sheetName, 2)f.InsertCol(sheetName, "D")// 复制行f.DuplicateRow(sheetName, 3)f.DuplicateRowTo(sheetName, 1, 7)// 删除行/列f.RemoveCol(sheetName, "F")f.RemoveRow(sheetName, 7)//查找fmt.Println(f.SearchSheet(sheetName, "200", true))fmt.Println(f.SearchSheet(sheetName, "^[0-9]{1,3}$", true))// 修改sheet页的名称f.SetSheetName(sheetName, "新的名称")// go数据类型添加到excel中  其中的基础数据类型,string,int,float,bool 都可以直接通过设置指定单元格的值实现// 下面演示数组,切片以及map格式的数据写入excelvar arr = []interface{}{"姓名", "性别", "年龄", "工作",}idx := f.NewSheet("data")// 数据必须是 []interface{} 类型的err := f.SetSheetRow("data", "A1", &arr)if err != nil {fmt.Println(err)}f.SetActiveSheet(idx)// 行列索引转换为单元格索引fmt.Println(excelize.JoinCellName("A", 10))// 单元格索引拆分行、列索引fmt.Println(excelize.SplitCellName("AA10"))// 设置多个单元格的公式,相当于在excel中通过拖拉复制公式data := [][]float64{{10.5, 20.5}, {18, 28}, {100, 900}}for i, d := range data {startCell, _ := excelize.JoinCellName("A", i+2)f.SetSheetRow("data", startCell, &d)}// 定义需要设置公式的所有单元格范围f_type, ref := excelize.STCellFormulaTypeShared, "C2:C4"// 相当于设置计算公式的模板if err := f.SetCellFormula("data", "C2", "=SUM(A2:B2)", excelize.FormulaOpts{Type: &f_type, Ref: &ref}); err != nil {fmt.Println(err)}// 合并单元格if err := f.MergeCell("data", "D1", "G6"); err != nil {fmt.Println(err)}mergedCells, err := f.GetMergeCells("data")if err != nil {fmt.Println(err)}// 获取合并单元格的值以及合并单元格的起止位置for _, cell := range mergedCells {fmt.Println(cell.GetStartAxis())fmt.Println(cell.GetEndAxis())fmt.Println(cell.GetCellValue())}v, err := f.GetCellValue("data", "F3")if err != nil {fmt.Println(err)}fmt.Println("合并单元格中的数据值是:", v)// 保存f.Save()// f.SaveAs("../excel_files/TMP_02.xlsx")
}

更多API请移驾作者大佬的文档 : https://xuri.me/excelize/zh-hans/
作者大佬的视频 : https://www.bilibili.com/video/BV1hU4y1F7wQ

Golang操作Excel的模块Excelize学习总结2-设置单元格数据相关推荐

  1. golang操作excel两种excelize包对比

    Go 语言是一门适合用于编写高效且并发的 Web 应用程序的编程语言,同时也可以使用它进行数据处理和分析.在数据处理和分析过程中,Excel 是一种常用的电子表格软件,很多情况下需要将数据导入到 Ex ...

  2. QT操作Excel封装类(包含高级功能:合并单元格,文本及单元格格式设定等)

    Pro 文件 CONFIG += qaxcontainer QT += core QT -= gui TARGET = QExcel CONFIG += console CONFIG -= app_b ...

  3. java自定义注解实现excel数据导入导出,设置单元格数据验证与生成省市区多列联动效果

    本文通过自定义注解实现excel数据导入导出.以及设置excel文件中列数据验证,即用户在excel文件中输入数据时就可以对数据格式验证是否符合,节省了程序中过多的数据验证操作,注解还额外提供了一系列 ...

  4. EXCEL中提取某行最后一个有效单元格数据

    用户的需求总是多种多样的,有的如同下图:大家可以看下图,只是举例,不一定合理.每个人所属的部门的级别不同,有的人属于公司之下,有的属于team之下,而大家可以看到这个表里面有很多空白单元格,看上去不是 ...

  5. 单元格自适应宽度_最详细的Excel模块Openpyxl教程(二)-单元格操作详解

    在以前的推文中,我们介绍了操作Excel的模块openpyxl的入门知识,相关推文可以从本公众号的底部相关菜单获取.接下来的推文我们来学习一下openpyxl这个python模块中的其他知识,本次推文 ...

  6. 表格大小设置_系统地学习Excel第18课,设置单元格字体格式

    上一篇:系统地学习Excel第17课,设置单元格格式 本篇内容结构如下: 本篇在章节中的位置 单元格字体格式包括字体.字号.字形.颜色等.Excel中文版默认单元格: 字体为[宋体]或[等线]: 字号 ...

  7. easyexcel读取excel合并单元格数据

    普通的excel列表,easyexcel读取是没有什么问题的.但是,如果有合并单元格,那么它读取的时候,能获取数据,但是数据是不完整的.如下所示的单元格数据: 我们通过简单的异步读取,最后查看数据内容 ...

  8. python中excel制作成绩报表_python制作简单excel统计报表2之操作excel的模块openpyxl简单用法...

    python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...

  9. Golang 操作Excel文件

    日常开发中会遇到处理Excel文件的相关操作,这里推荐一款应用比较广泛的操作Excel的开源工具Excelize. Excelize是一个用Go语言编写的库,提供了一组允许您写入和读取XLSX / X ...

最新文章

  1. 程序员发长贴讲述真实某多多:薪水高,普调高,环境差,厕所少!强制去买菜,全行业竞业,穿拖鞋会被暴力执法!...
  2. python四大软件-传智播客解析Python之移动端页面适配四大方式
  3. Frida 基础操作2
  4. java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法
  5. 笔记41 Spring Web Flow——Demo
  6. @Service注解的作用
  7. redis源码dict.c simple reading
  8. 【论文写作】毕业论文写作时的常见问题
  9. Unix和Windows比较
  10. 基于iTextSharp(C#)创建PDF文件
  11. SharePoint Designer 2013 连接 Office 365 必需安装2个SP
  12. 解空间树及其相关算法
  13. Halcon深度学习目标检测例程学习经验(1)
  14. 视频播放器 layui-ckplayer
  15. java组合算法应用:购物满减(任意数字组合相加在某个范围内)
  16. linux shell提示文件不存在,Bash检查是否显示文件不存在?
  17. java基本数据类型各占多少字节,int和Integer区别
  18. 交换机、路由器、网关的概念,并知道各自的用途
  19. USB-C接口 OTG协议芯片 支持同时传输数据充电
  20. Windows CE.net的智能…

热门文章

  1. 苹果手写笔有必要买原装的吗?高品质苹果平板手写笔推荐
  2. 饿了么拿什么留住年轻人?
  3. Subscripts
  4. ObjectARX_面域
  5. Java数据流和打印流
  6. 数据仓库的星型模型和雪花模型的区别以及优缺点
  7. 虎年来了,快来许愿吧,听说愿望会成真哦
  8. Android 自定义可拖拽悬浮按钮
  9. VMware vCenter Web Client 集成 PowerCLI Onyx
  10. 最全解读 | 旷视天元Beta版核心技术升级全面解读