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中

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

查看所有标签

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

黑客攻防技术宝典(第2版)

黑客攻防技术宝典(第2版)

[英] Dafydd Stuttard、[英] Marcus Pinto / 石华耀、傅志红 / 人民邮电出版社 / 2012-6-26 / 99.00元

内容简介: Web应用无处不在,安全隐患如影随形。承载着丰富功能与用途的Web应用程序中布满了各种漏洞,攻击者能够利用这些漏洞盗取用户资料,实施诈骗,破坏其他系统等。近年来,一些公司的网络系统频频遭受攻击,导致用户信息泄露,造成不良影响。因此,如何确保Web应用程序的安全,已成为摆在人们眼前亟待解决的问题。 本书是Web安全领域专家的经验结晶,系统阐述了如何针对Web应用程序展开攻击与......一起来看看 《黑客攻防技术宝典(第2版)》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码