前面我已经用python实现过了,具体可以看:

https://blog.csdn.net/sinolzeng/article/details/113972040

https://blog.csdn.net/sinolzeng/article/details/113973018

但是,因为有朋友的电脑是没有部署python环境的,而用pyinstaller打包的玩意会很大很慢,所以,我就干脆用go再实现一遍吧,以后的小工具我看可以考虑用go语言来实现了。

或者,aardio也是个好玩意,在windows平台上造小工具最好用的我觉得其实是aardio。就是官方论坛倒闭了有点可惜。不过接下来可能我也不需要造那么多的小工具了,毕竟都七七八八了。

上代码,如果有go环境的话直接编译一下就可以了:

package mainimport ("bufio""fmt""io""math""os""regexp"//"strconv""strings""time""github.com/360EntSecGroup-Skylar/excelize"
)var tmp stringfunc now() string {n := time.Now()return n.Format("2006-01-02 15:04:05") //go语言诞生的时间
}func getAxisY(count int) string {arr := [27]string{"", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}mod := count % 26divisor := int(math.Floor(float64(count) / 26))if mod == 0 && divisor > 0 {mod = 26divisor -= 1}return arr[divisor] + arr[mod]
}func isDir(path string) bool {s, err := os.Stat(path)if err != nil {return false}return s.IsDir()
}//自己编写一个函数,接收两个文件路径
func CopyFile(dstFileName string, srcFileName string) (written int64, err error) {srcFile, err := os.Open(srcFileName)if err != nil {fmt.Printf("open file err=%v\n", err)}defer srcFile.Close()//通过srcfile,找到Readerreader := bufio.NewReader(srcFile)//打开dstFileNamedstFile, err := os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666)if err != nil {fmt.Printf("open file err=%v\n", err)return}//通过dstFile,找到Writerwriter := bufio.NewWriter(dstFile)defer dstFile.Close()return io.Copy(writer, reader)
}func mission() bool {pwd, _ := os.Getwd()_, err := os.Stat(pwd + "\\模板.xlsx")if !os.IsNotExist(err) { //读取到模板fmt.Println("载入模板...")_, err := os.Stat(pwd + "\\数据.xlsx")if !os.IsNotExist(err) { //读取到数据fmt.Println("载入数据...")dataxlsx, err := excelize.OpenFile(pwd + "\\数据.xlsx")if err != nil {fmt.Println(err)}sheetname := dataxlsx.GetSheetName(dataxlsx.GetActiveSheetIndex())rows, _ := dataxlsx.GetRows(sheetname)positions := rows[0]// for k, v := range positions {//     match, _ := regexp.MatchString("^[a-zA-Z]+[0-9]+$", v)//   if !match {//       fmt.Println("【数据.xlsx第一行中的第" + getAxisY(k+1) + "列位置填写格式错误,请重新检查】...")//       return true//   }// }reg := regexp.MustCompile(`[\/\\\:\*\?\"\<\>\|]`) //去掉不能用来作为文件或文件夹名的符号output := pwd + "\\output" + reg.ReplaceAllString(now(), "_")if !isDir(output) {err := os.Mkdir(output, os.ModePerm)if err != nil {fmt.Println(err)}}for row := 1; row < len(rows); row++ {if len(rows[row]) == 0 || reg.ReplaceAllString(rows[row][0], "_") == "" {continue}filename := output + "\\" + reg.ReplaceAllString(rows[row][0], "_") + ".xlsx"CopyFile(filename, pwd+"\\模板.xlsx")currentxlsx, err := excelize.OpenFile(filename)if err != nil {fmt.Println(err)}sheetname = currentxlsx.GetSheetName(currentxlsx.GetActiveSheetIndex())for col, value := range rows[row] {match, _ := regexp.MatchString("^[a-zA-Z]+[0-9]+$", positions[col])if match {currentxlsx.SetCellStr(sheetname, strings.ToUpper(positions[col]), value)}}currentxlsx.Save()//fmt.Println(now() + " 第" + strconv.Itoa(row) + "个表填写完成,共" + strconv.Itoa(len(rows)-1) + "个...")}} else {fmt.Println("读取不到数据,请将你要处理的excel数据命名为【数据.xlsx】并放到exe同路径下...")return true}} else {fmt.Println("读取不到模板,请将你要处理的excel模板命名为【模板.xlsx】并放到exe同路径下...")return true}return true
}func main() {fmt.Println(now() + " 任务开始...")mission()fmt.Println(now() + " 任务完成,请按回车键退出...")fmt.Scanln(&tmp)
}

最后是打包说明和程序:https://download.csdn.net/download/sinolzeng/15446706

用go语言制作读取excel模板批量生成表格工具相关推荐

  1. 用go语言制作读取excel模板批量生成word工具

    上一篇是批量生成excel的,这一篇是批量生成word的. 这里做三点说明: 第一就是这个东西到底是干嘛用的.有时候有这样的业务场景,比如说人事部门要填写很多个word,每个word都是按照特定的模板 ...

  2. 【收藏】Python利用Excel+模板批量生成word文件

    Python利用Excel+模板批量生成word文件 最近帮朋友批量生成小区业主物业费未缴的律师函.朋友那有物业那边的表格数据,包括楼栋-房间号.业主姓名.欠费日期.欠款金额等信息.目的是需要将这些表 ...

  3. 使用POI读取EXCEL模板并填充数据,上传至腾讯云储存桶

    读取EXCEL模板,并填充数据生成文件 前言 一.POI导入 二.具体实现 1.制作我们的模板 2.读取模板来生成新的EXCEL 3.查看生成结果 三,传到腾讯云储存桶里 1.导入COS依赖 2.写个 ...

  4. python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...

  5. R语言中读取excel数据的常用方式有哪些?

    R语言中读取excel数据的常用方式有哪些? 目录 R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R ...

  6. poi读取excel模板,并填充数据

    一.POI介绍 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 基本功能: HSSF - 提供读写 ...

  7. Go 语言如何读取 excel 测试数据,简单易学

    测试当中的数据经常会有 Excel 保存起来,尤其是一些用例的步骤和入参.这么做的好处是,不管你使用什么样的工具,不管你使用什么样的编程语言,都可以通过读取通用格式的数据来进行自动化测试. 在自动化测 ...

  8. POI读取Excel模板并导出大量数据

    POI读取Excel模板并导出大量数据 我在使用XSSFWorkbook读取Excel模板并导出大量数据(百万级)时,发现很长时间没有响应,debugger模式发现在读取第三四十万条数据时,程序直接停 ...

  9. python批量读取excel表格数据_Python读取Excel数据并生成图表过程解析

    一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便,一般只能通过缩放比例解决. 二.需求实现目标 通过 ...

最新文章

  1. Linux系统中的软件管理
  2. AI在这张“问卷”上首次超越人类,SuperGLUE被微软谷歌两家“攻破”
  3. Boost:双图bimap与property地图的测试程序
  4. SAP Spartacus express checkout 设计
  5. 联想笔记本重装系统教程
  6. Vivado过程文件解释
  7. BZOJ 2434 阿狸的打字机(ac自动机+dfs序+树状数组)
  8. mysql的随机查询
  9. Qt视频直播软件--项目实战(Day3)
  10. 微信小程序 自定义picker封装成插件实现二级三级四级联动
  11. android 判断是否安装百度地图,判断手机是否安装高德/百度地图
  12. 如何用美剧真正提升你的英语水平————转自厦大口译的博客
  13. 物理机ping通Centos虚拟机,但虚拟机ping不通物理机的解决方法
  14. html实现正方体原理,CSS3 实现正方体
  15. 电商平台--Mysql主从搭建(2)
  16. 仿京东淘宝商品详情页中视频和图片的轮播功能
  17. 最新xampp安装教程与配置
  18. 『tensorflow笔记』图变量tf.Variable的用法解析
  19. idea创建maven工程没有src文件夹,或者是maven文件结构不能完整创建,可能是因为你的网速问题
  20. python: 条件语句、断言

热门文章

  1. T1683 车厢重组 codevs
  2. 【剑仙教程】易语言的结构体。自定义数据类型。
  3. 【Java】实战Java虚拟机之五“开启JIT编译”
  4. HDU-4516 威威猫系列故事——因式分解 多项式分解
  5. PMP考试资料:这个项目值得去做吗
  6. Jenkins部署Python项目实战
  7. 在CentOS6.8下安装Docker
  8. hashmap的C++实现
  9. 欧盟数据保护新规则 75%云应用没准备好
  10. 将web项目deploy到tomcat的方法