Golang | Introducción al módulo e implementación rápida del negocio de lectura y escritura de tablas

introducir

En muchos sistemas de gestión, hay muchos requisitos comerciales para que el back-end opere la mesa. En este número, le mostraré cómo usar la introducción del módulo en Golang y le explicaré cómo usar rápidamente la biblioteca de Excelize para leer , escribir y crear tablas.

texto

Entorno de importación del módulo de configuración

Esperamos que la introducción del módulo también se pueda usar en el terminal vscode, que es la nueva versión de administración de módulos después de Go 1.11.

go env -w GO111MODULE=auto

que GO111MODULEse puede pasar:

  • auto: cuando hay un go.modarchivo soporte del módulo está habilitado; de lo contrario, no hay soporte del módulo.

  • on: Habilitar el soporte del módulo.

  • apagado: Sin soporte de módulo.

Luego, cuando se inicializa el proyecto, se genera un go.modarchivo .

go mod init excel-demo

go.modEs la herramienta oficial de administración de paquetes introducida en la versión Go 1.11 ( gopathanteriormente administrada por ). Puede entenderse como npmel rol del desarrollo front-end, principalmente para resolver el problema de que la versión específica del paquete dependiente no se registra, y también es muy conveniente comprobar la gestión de paquetes de dependencia.

Introducir la biblioteca de Excelize

excelize es una biblioteca de Go para leer y escribir documentos de hoja de cálculo (XLAM/XLSM/XLSX/XLTM/XLTX) generados por Microsoft Excel™ 2007 y versiones posteriores, se actualiza y mantiene con frecuencia y es muy fácil de usar.

Introducir sobresalir

go get github.com/xuri/excelize/v2

Debido a que el sitio es extranjero, a menudo se agota debido a la inaccesibilidad. En este punto, no se asuste, podemos cambiar a un agente doméstico.

go env -w GOPROXY=https://goproxy.cn

crear una tabla

package main

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

func createExcel(){
    // 创建表格文件
	f := excelize.NewFile()
    // 在Sheet1设置A1项的值
	f.SetCellValue("Sheet1", "A1", "这是Sheet1的A1项")
    // 创建新的Sheet,命名为Sheet2
	selectIndex := f.NewSheet("Sheet2")
    // 在Sheet2设置B2项的值
	f.SetCellValue("Sheet2", "B2", "这是Sheet2的B2项")
    // 切换到Sheet2
    f.SetActiveSheet(selectIndex)
    // 保存文件
    if err := f.SaveAs("test.xlsx"); err != nil {
        fmt.Println(err)
    }
}

func main() {
    // 执行创建表格
	createExcel()
}

De acuerdo con lo anterior, cree un archivo, escriba algunos datos en la columna y guárdelo. Es muy simple. Ahora vamos a ejecutarlo, y encontraremos que habrá un archivo extra text.xlsx en el directorio actual. Sí , esto es lo que acabamos de generar. El archivo de formulario que sale, ábralo y podrá ver parte del contenido que acabamos de escribir.

go演示1.png

leer formulario

func openExcel(){
	// 读取test.xlsx表格文件
	f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 获取Sheet2的B2项的值
    cell, err := f.GetCellValue("Sheet2", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
	fmt.Println(cell)
	
	fmt.Println("---------------")
	
	// 获取Sheet1所有的项
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
	}
	// 遍历Sheet1所有的项并打印出来
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

上面做的操作是把我们刚才保存好的表格文件的内容读取出来,这里分了两种形式,一种是用 GetCellValue 方法读取某个sheet的某一项,另一种是用 GetRows 对获取整个sheet的项,然后for循环遍历出来。

go演示2.png

写入表格

刚刚在创建的时候其实已经使用 SetCellValue 方法对表格的写入操作,但这还远远不够,因为还有很多东西我们可以写入进去,比如说图表和图片甚至是其他表格文件。图表这里先简单说明一下,它用了 AddChart 方法也是对某一项进行操作,插入相关数据进去,形式如下(详见文档):

if err := f.AddChart("Sheet1", "E1", `{
        "type": "col3DClustered",
        "series": [
        {
            "name": "Sheet1!$A$2",
            "categories": "Sheet1!$B$1:$D$1",
            "values": "Sheet1!$B$2:$D$2"
        }]
        }`); err != nil {
    fmt.Println(err)
    return
}

接下来,我们主要讲一下图片是如何写入进表格的,首先,我们先准备一张图片,就放在assets目录吧,然后在到 import 中导入jpeg和png,目的是明确后面要解析的图片(目前可以解析出jpeg,jpg,png格式的图片了),如果不写或者格式不对则会出现 image: unknown format 的提示。

package main

import (
	"fmt"
	_ "image/jpeg"
    _ "image/png"
    "github.com/xuri/excelize/v2"
)

然后我们还是要读取一下刚刚生成出来的test.xlsx表格文件,再把图片写入进去。

func setPic(){
	f, err := excelize.OpenFile("test.xlsx")
    if err != nil {
        fmt.Println(err)
        return
	}
	
	// 导入并设置图片
    if err := f.AddPicture("Sheet2", "C3", "assets/anya.png",
		`{
			"x_offset": 10,
        	"y_offset": 10,
			"x_scale": 0.8, 
			"y_scale": 0.8
		}`); err != nil {
        fmt.Println(err)
	}
	
	// 保存刚才的操作
	if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}

而且图片还可以这是位置,大小等参数,但这里一定要记住不管添加了什么最后一定要保存一下,不然就是一场空。最后么,一个小阿尼亚就写入到了表格中啦~

go演示3.png

结语

本篇主要是带大家简单了解怎么使用excelize库对表格进行操作,其实都还是皮毛,它的功能比你想的还要强大,详细的可以看 官方文档 ,算是一个非常实用的工具库了。


本文正在参加技术专题18期-聊聊Go语言框架

Supongo que te gusta

Origin juejin.im/post/7123120168167243790
Recomendado
Clasificación