You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: tab_data.go
    path of file: ./repos/tabtoy/v2tov3
    
    the code of the file until where you have to start completion: package v2tov3

import (
	"github.com/davyxu/tabtoy/util"
	"github.com/davyxu/tabtoy/v2tov3/model"
	"github.com/davyxu/tabtoy/v3/helper"
	"github.com/tealeg/xlsx"
	"strings"
)

func importDatas(sourceSheet, targetSheet *xlsx.Sheet, headerList []model.ObjectFieldType, fileName string) error {

	var row, col int

	for row = 4; ; row++ {

		if helper.IsFullRowEmpty(sourceSheet, row) {
			break
		}
		rowData := targetSheet.AddRow()

		var header model.ObjectFieldType

		for col, header = range headerList {

			sourceCell := sourceSheet.Cell(row, col)

			
    
func importDatas(sourceSheet, targetSheet *xlsx.Sheet, headerList []model.ObjectFieldType, fileName string) error {

	var row, col int

	for row = 4; ; row++ {

		if helper.IsFullRowEmpty(sourceSheet, row) {
			break
		}
		rowData := targetSheet.AddRow()

		var header model.ObjectFieldType

		for col, header = range headerList {

			sourceCell := sourceSheet.Cell(row, col)

			sourceCell.Value = strings.TrimSpace(sourceCell.Value)

			targetCell := rowData.AddCell()

			if header.IsArray() {
				targetCell.SetValue(sourceCell.Value)
				continue
			}

			if err := setTargetCell(header.FieldType, sourceCell, targetCell, row, col, fileName); err != nil {
				return err
			}
		}

	}

	return nil

}