golang读取xls写入到xlsx中

栏目: IT技术 · 发布时间: 6年前

内容简介:前一段时间想要用golang读取xls文件里的数据,并写入到xlsx中,xls的读写国内网上的教程鲜有能参考的,因此将自己的处理的过程整理了下供需要的小伙伴们参考,由于是初学golang,水平有限,欢迎大家批评指正。test.xls里的数据最终result.xlsx里的数据

前一段时间想要用golang读取xls文件里的数据,并写入到xlsx中,xls的读写国内网上的教程鲜有能参考的,因此将自己的处理的过程整理了下供需要的小伙伴们参考,由于是初学golang,水平有限,欢迎大家批评指正。

test.xls里的数据

golang读取xls写入到xlsx中
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读取xls写入到xlsx中

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Methods and Methods of Approximation in Science and En

Numerical Methods and Methods of Approximation in Science and En

Karan Surana / CRC Press / 2018-10-31

ABOUT THIS BOOK Numerical Methods and Methods of Approximation in Science and Engineering prepares students and other readers for advanced studies involving applied numerical and computational anal......一起来看看 《Numerical Methods and Methods of Approximation in Science and En》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具