导入增加功能:可以指定从哪一行开始导入数据

main v0.0.11
lj-wsdj 2024-10-23 13:18:58 +08:00
parent 370df7541a
commit a44dabf05e
4 changed files with 20 additions and 10 deletions

View File

@ -8,10 +8,10 @@ import (
)
type Data struct {
Name string `export:"true,x:1,y:1,title:项目名称"`
TotalInvest int64 `export:"true,x:2,y:1,title:总投资(万元)"`
Unit string `export:"true,x:3,y:1,title:单位"`
Remark string `export:"true,x:4,y:1,title:备注"`
Name string `export:"true,x:1,y:2,title:项目名称"`
TotalInvest int64 `export:"true,x:2,y:2,title:总投资(万元)"`
Unit string `export:"true,x:3,y:2,title:单位"`
Remark string `export:"true,x:4,y:2,title:备注"`
}
func TestMain(t *testing.T) {
@ -37,6 +37,7 @@ func TestMain(t *testing.T) {
}
exporter := export.DefaultExporter()
exporter.Data = &data
exporter.Titles = nil
exporter.File = "test6.xlsx"
exporter.Path = "./"
err := exporter.Export(0)

View File

@ -19,7 +19,7 @@ type Data struct {
func TestMain(t *testing.T) {
var data []Data
importer, err := imports.NewFileImporter("./test7.xlsx", &data)
importer, err := imports.NewFileImporter("./test7.xlsx", &data, 2)
if err != nil {
fmt.Println(err)
}

View File

@ -13,34 +13,43 @@ import (
type Importer struct {
Reader io.Reader
Sheets []string
Sheets []string //Sheet页
xlsxFile *excelize.File
startRow int // 从第几行开始读取数据
Data interface{}
}
func NewFileImporter(file string, data any) (*Importer, error) {
func NewFileImporter(file string, data any, start_row int) (*Importer, error) {
f, err := excelize.OpenFile(file)
if err != nil {
return nil, err
}
sheets := f.GetSheetList()
if start_row <= 0 {
start_row = 1
}
return &Importer{
xlsxFile: f,
Sheets: sheets,
Data: data,
startRow: start_row,
}, nil
}
func NewFileReaderImporter(reader io.Reader, data any) (*Importer, error) {
func NewFileReaderImporter(reader io.Reader, data any, start_row int) (*Importer, error) {
f, err := excelize.OpenReader(reader)
if err != nil {
return nil, err
}
sheets := f.GetSheetList()
if start_row <= 0 {
start_row = 1
}
return &Importer{
xlsxFile: f,
Sheets: sheets,
Data: data,
startRow: start_row,
}, nil
}
@ -81,8 +90,8 @@ func (i *Importer) dealFile(sheetIndex int) error {
rowIndex := 0
for rows.Next() {
rowIndex += 1
// 第一行为表头
if rowIndex > 1 {
// 从第几行开始读取数据
if rowIndex >= i.startRow {
row, err := rows.Columns()
if err != nil {
return err

Binary file not shown.