1 Star 0 Fork 0

jackytse / tabtoy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
sheet_datav.go 1.86 KB
一键复制 编辑 原始数据 按行查看 历史
package v2
import (
"strings"
"gitee.com/jackytse/tabtoy/util"
"gitee.com/jackytse/tabtoy/v2/i18n"
"gitee.com/jackytse/tabtoy/v2/model"
)
const (
ColumnMajor_RowDataBegin = 1
ColumnMajor_ColumnValue = 4
)
// 导出适合配置格式的表格
func (self *DataSheet) exportColumnMajor(file *File, dataModel *model.DataModel, dataHeader, parentHeader *DataHeader) bool {
// 是否继续读行
var readingLine bool = true
var meetEmptyLine bool
var warningAfterEmptyLineDataOnce bool
line := model.NewLineData()
for self.Row = ColumnMajor_RowDataBegin; readingLine; self.Row++ {
// 整行都是空的
if self.IsFullRowEmpty(self.Row, dataHeader.RawFieldCount()) {
// 再次碰空行, 表示确实是空的
if meetEmptyLine {
break
} else {
meetEmptyLine = true
}
continue
} else {
//已经碰过空行, 这里又碰到数据, 说明有人为隔出的空行, 做warning提醒, 防止数据没导出
if meetEmptyLine && !warningAfterEmptyLineDataOnce {
r, _ := self.GetRC()
log.Warnf("%s %s|%s(%s)", i18n.String(i18n.DataSheet_RowDataSplitedByEmptyLine), self.file.FileName, self.Name, util.R1C1ToA1(r, 1))
warningAfterEmptyLineDataOnce = true
}
}
fieldDef := dataHeader.RawField(self.Row - ColumnMajor_RowDataBegin)
// 数据大于列头时, 结束这个列
if fieldDef == nil {
break
}
// #开头表示注释, 跳过
if strings.Index(fieldDef.Name, "#") == 0 {
continue
}
rawValue := self.GetCellData(self.Row, ColumnMajor_ColumnValue)
r, c := self.GetRC()
line.Add(&model.FieldValue{
FieldDef: fieldDef,
RawValue: rawValue,
SheetName: self.Name,
FileName: self.file.FileName,
R: r,
C: c,
FieldRepeatedCount: dataHeader.FieldRepeatedCount(fieldDef),
})
}
dataModel.Add(line)
return true
}
Go
1
https://gitee.com/jackytse/tabtoy.git
git@gitee.com:jackytse/tabtoy.git
jackytse
tabtoy
tabtoy
v0.1.0

搜索帮助