xlsx

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

XlsxWriter插件文档

快速介绍

XlsxWriter插件实现了向xlsx文件写入数据。在底层实现上,XlsxWriter通过github.com/xuri/excelize/v2的流式写入方式写入文件。同时,需要注意的是一个sheet允许保存的数据不应超过1048576,需要计算好导出的sheet数,否则会报错,导致导出失败。此外,对于文件数目的大小要和reader的切分数一致,否则会导致任务无法开始。

实现原理

XlsxWriter将reader传来的每一个记录,通过github.com/xuri/excelize/v2的流式写入方式写入文件,这种流式写入方式具有写入速度快,占用内存少的优点。

XlsxWriter通过使用file.Task中定义的写入流程调用go-etl自定义的storage/stream/file的file.OutStreamer来实现具体的读取。

功能说明

配置样例

配置一个向xlsx文件同步写入数据的作业:

{
    "job":{
        "content":[
            {
                "writer":{
                    "name": "xlsxwriter",
                    "parameter": {
                        "column" :[
                            {
                                "index":"A",
                                "type":"time",
                                "format":"yyyy-MM-dd"
                            }
                        ],
                        "xlsxs":[
                            {
                                "path":"Book1.xlsx",
                                "sheets":["Sheet1"]
                            }
                        ],
                        "batchTimeout": "1s",
                        "batchSize":1000
                    }
                }
            }
        ]
    }
}
参数说明
column
  • 描述 主要用于配置xlsx文件的列信息数组,如不配置对应信息,则认为对应为string类型
  • 必选:是
  • 默认值: 无
index
  • 描述 主要用于配置xlsx文件的列编号,从A开始
  • 必选:是
  • 默认值: 无
type
  • 描述 主要用于配置xlsx文件的列类型,主要有boolen,bigInt,decimal,string,time等类型,目前对time仅能使用string类型读取
  • 必选:是
  • 默认值: 无
format
  • 描述 主要用于配置xlsx文件的列类型,主要用于配置time类型的格式,使用的是java的joda time格式,如yyyy-MM-dd
  • 必选:是
  • 默认值: 无
xlsxs
  • 描述 主要用于配置xlsx文件的信息,可以配置多个文件
  • 必选:是
  • 默认值: 无
path
  • 描述 主要用于配置xlsx文件的绝对路径
  • 必选:是
  • 默认值: 无
sheets
  • 描述 主要用于配置xlsx文件的sheet名数组
  • 必选:是
  • 默认值: 无
nullFormat
  • 描述:文本文件中无法使用标准字符串定义null(空指针),DataX提供nullFormat定义哪些字符串可以表示为null。例如如果用户配置: nullFormat="\N",那么如果源头数据是"\N",DataX视作null字段。
  • 必选:否
  • 默认值:空字符串
hasHeader
  • 描述:是否写入csv文件的列头,当存在header,写入header,而不存在时,写入列名。
  • 必选:否
  • 默认值:false
header
  • 描述:写入csv文件的列头数组,仅hasHeader有效。
  • 必选:否
  • 默认值:无
sheetRow
  • 描述:sheet最大的列数,最大为1048576。
  • 必选:否
  • 默认值:1048576
batchTimeout
  • 描述 主要用于配置每次批量写入超时时间间隔,格式:数字+单位, 单位:s代表秒,ms代表毫秒,us代表微妙。如果超过该时间间隔就直接写入,和batchSize一起调节写入性能。
  • 必选:否
  • 默认值: 1s
batchSize
  • 描述 主要用于配置每次批量写入大小,如果超过该大小就直接写入,和batchTimeout一起调节写入性能。
  • 必选:否
  • 默认值: 1000
类型转换

目前XlsxWriter支持的xlsx数据类型需要在column配置中配置,目前xlsx仅支持文本格式的单元格,请注意检查你的类型。

下面列出XlsxWriter针对xlsx类型转换列表:

go-etl的类型 xlsx数据类型
bigInt bigInt
decimal decimal
string string
time time
bool bool

性能报告

待测试

约束限制

FAQ

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	file.BaseConfig

	Columns []xlsx.Column `json:"column"`
	Xlsxs   []Xlsx        `json:"xlsxs"`
}

Config xlsx输出配置

func NewConfig

func NewConfig(conf *config.JSON) (c *Config, err error)

NewConfig 通过json配置conf创建xlsx输出配置

type Job

type Job struct {
	*file.Job
	// contains filtered or unexported fields
}

Job 工作

func NewJob

func NewJob() *Job

NewJob 创建工作

func (*Job) Init

func (j *Job) Init(ctx context.Context) (err error)

Init 初始化

func (*Job) Split

func (j *Job) Split(ctx context.Context, number int) (configs []*config.JSON, err error)

Split 切分

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writer 写入器

func (*Writer) Job

func (w *Writer) Job() spiwriter.Job

Job 工作

func (*Writer) ResourcesConfig

func (w *Writer) ResourcesConfig() *config.JSON

ResourcesConfig 插件资源配置

func (*Writer) Task

func (w *Writer) Task() spiwriter.Task

Task 任务

type Xlsx

type Xlsx struct {
	Path   string   `json:"path"`
	Sheets []string `json:"sheets"`
}

Xlsx xlsx内容配置

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL