首页 > 其他分享 >Go--生成excel表格,读取excel表格数据

Go--生成excel表格,读取excel表格数据

时间:2023-02-09 15:33:16浏览次数:35  
标签:表格 err -- fmt excel nil 表名 Println

先下载第三方依赖包:

go get -u github.com/xuri/excelize/v2

 

代码:

package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

//生成excel表格
func touchExcel() {
    //开启新的文件
    f := excelize.NewFile()

    //创建一个工作表
    index, err := f.NewSheet("工作表名")
    if err != nil {
        fmt.Println("创建工作表失败:", err)
    }

    //设置默认的工作表
    f.SetActiveSheet(index)

    //给单元格赋值
    f.SetCellValue("工作表名", "A2", "hello")
    f.SetCellValue("工作表名", "B2", "100")

    //创建一个工作表
    f.NewSheet("Sheet1")

    f.SetCellValue("Sheet1", "B2", "100")
    //保存路径
    if err := f.SaveAs("test-excel/test2.xlsx"); err != nil {
        fmt.Println("保存文件失败:", err)
    }
}

//打开excel,读取数据
func readExcel() {
    f, err := excelize.OpenFile("test-excel/test2.xlsx")
    if err != nil {
        fmt.Println("打开excel文件失败")
    }

    //打开文件后要关闭
    defer f.Close()

    //获取指定单元格的值
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println("获取数据失败:", err)
        return
    }
    fmt.Printf(cell)

    //获取 工作表名 上所有单元格的值
    rows, err := f.GetRows("工作表名")
    if err != nil {
        fmt.Println("获取单元格失败:", err)
        return
    }
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

func main() {
    //touchExcel()
    readExcel()
}

 

标签:表格,err,--,fmt,excel,nil,表名,Println
From: https://www.cnblogs.com/Xinenhui/p/17105466.html

相关文章

  • 5分钟背驰将产生3-6个交易日的调整
     上证指数和创业板指数从5分钟走势结构来看,5分钟背驰已经确认成立,5分钟上产生背驰,至少会产生5分钟线段的调整,从调整时间上来看,时间大概是3-6个交易日,正好从侧面......
  • 数据库必知必会:TiDB(4)TiKV分布式事务
    (数据库必知必会:TiDB(4)TiKV分布式事务)分布式事务存在的问题假设有这样一个事务:begin:updatepersonsetname='Tom'whereid=1;updatepersonsetname='Jack'......
  • 【Rust学习】内存安全探秘:变量的所有权、引用与借用
    作者:京东零售周凯一.前言Rust语言由Mozilla开发,最早发布于2014年9月,是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少......
  • Nginx动态分离和平滑升级
    Nginx动态分离和平滑升级......
  • TiDB增强型 StatefulSet 控制器--Advanced StatefulSet
    K8S内置的 ​​StatefulSet​​ 为Pods分配连续的序号。比如3个副本时,Pods分别为pod-0,pod-1,pod-2。扩缩容时,必须在尾部增加或删除Pods。比如扩容到4个副本时......
  • nginx正则表达式和动静分离
    nginx正则表达式和动静分离一、nginx简介Nginx(“enginex”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页......
  • 拉格朗日插值
    前言关于范德蒙德矩阵的傻逼证明自行百度。点值表达一个次数界为\(n\)的多项式\(A(x)\)的点值表达是一个由\(n\)个点对组成的集合:\[\{(x_0,y_0),(x_1,y_1),\dot......
  • requests爬取图片
    #requests库爬取图片importrequestsfrombs4importBeautifulSoupdefspider():url='https://www.sogou.com/web'keyword=input('请输入信息')headers......
  • 动态监听和静态监听的区别
    动态监听和静态监听主要区别是实例向监听注册的方式。注册,就是让监听能够找到数据库实例。一、动态监听1.动态注册不需要显示的配置listener.ora文件,实例启动的时候,PMON......
  • 抖音获客系统简介,精准获取,系统简介
    功能介绍功能获取获客系统主要核心数据看板名词介绍当前运行任务:系统正在运行的获客任务总数,获取客户档案:符合任务规则提取的目标客户,总分析任务:系统合计运行的获客任......