代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。