内容简介:前一段时间想要用golang读取xls文件里的数据,并写入到xlsx中,xls的读写国内网上的教程鲜有能参考的,因此将自己的处理的过程整理了下供需要的小伙伴们参考,由于是初学golang,水平有限,欢迎大家批评指正。test.xls里的数据最终result.xlsx里的数据
前一段时间想要用golang读取xls文件里的数据,并写入到xlsx中,xls的读写国内网上的教程鲜有能参考的,因此将自己的处理的过程整理了下供需要的小伙伴们参考,由于是初学golang,水平有限,欢迎大家批评指正。
test.xls里的数据
package main
import (
"log"
"os"
"github.com/extrame/xls"
"github.com/tealeg/xlsx"
)
var xlsxTitle = []string{"字段1", "字段2", "字段3", "字段4"}
var cell *xlsx.Cell
func main() {
pwd, _ := os.Getwd()
targetPath := pwd + `\result.xlsx`
xlsxFile := getXlsxFile(targetPath)
xlsxSheet := xlsxFile.Sheets[0]
dataToInsert := []string{"切片内数据1", "切片内数据2", "切片内数据3", "切片内数据4"}
insertRow(xlsxSheet, &dataToInsert)
xlsPath := pwd + `\test.xls`
xlsFile, closer, err := xls.OpenWithCloser(xlsPath, "utf-8")
if err != nil {
log.Fatal(err)
}
// 获取xls文件的第一个sheet
sheet := xlsFile.GetSheet(0)
// 从第二行开始,遍历xls文件,然后按行调用insertRowFromXls函数
for j := 1; j < int(sheet.MaxRow)+1; j++ {
xlsRow := sheet.Row(j)
rowColCount := xlsRow.LastCol()
insertRowFromXls(xlsxSheet, xlsRow, rowColCount)
}
closer.Close()
xlsxFile.Save(targetPath)
}
// 将xls.Row指针对应的数据插入到xlsx.sheet中
func insertRowFromXls(sheet *xlsx.Sheet, rowDataPtr *xls.Row, rowColCount int) {
row := sheet.AddRow()
for i := 0; i < rowColCount; i++ {
cell = row.AddCell()
cell.Value = rowDataPtr.Col(i)
}
}
// 将一个切片指针对应的数据插入到xlsx.sheet中
func insertRow(sheet *xlsx.Sheet, rowDataPtr *[]string) {
row := sheet.AddRow()
rowData := *rowDataPtr
for _, v := range rowData {
cell := row.AddCell()
cell.Value = v
}
}
// 获取xlsx.File对象的指针,如果文件路径不存在则新建一个文件,并返回其指针
func getXlsxFile(filePath string) *xlsx.File {
var file *xlsx.File
if _, err := os.Stat(filePath); err == nil {
file, err = xlsx.OpenFile(filePath)
if err != nil {
log.Fatal(err)
}
} else {
file = xlsx.NewFile()
sheet, err := file.AddSheet("sheet1")
if err != nil {
log.Fatal(err)
}
insertRow(sheet, &xlsxTitle)
}
return file
}
最终result.xlsx里的数据
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- golang 创建,读取,写入文件
- 第十五篇:SQL注入读取、写入文件
- go语言csv文件的读取与写入
- 使用vbscript代码从文本文件中读取和写入值
- 《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
- R0Ak:一款针对Windows 10的内核模式代码读取、写入和执行的测试工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript面向对象编程指南
斯托扬 / 凌杰 / 人民邮电出版社 / 2013-3 / 59.00元
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的面向对象特性,如对象的私有成员与私有方法;如何应用适当的编程模式,......一起来看看 《JavaScript面向对象编程指南》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
UNIX 时间戳转换
UNIX 时间戳转换