MCPcopy
hub / github.com/davyxu/tabtoy / exportRowMajor

Method exportRowMajor

v2/sheet_data.go:43–136  ·  view source on GitHub ↗

导出以行数据延展的表格(普通表格)

(file *File, dataModel *model.DataModel, dataHeader, parentHeader *DataHeader)

Source from the content-addressed store, hash-verified

41
42// 导出以行数据延展的表格(普通表格)
43func (self *DataSheet) exportRowMajor(file *File, dataModel *model.DataModel, dataHeader, parentHeader *DataHeader) bool {
44
45 // 是否继续读行
46 var readingLine bool = true
47
48 var meetEmptyLine bool
49
50 var warningAfterEmptyLineDataOnce bool
51
52 // 遍历每一行
53 for self.Row = DataSheetHeader_DataBegin; readingLine; self.Row++ {
54
55 // 整行都是空的
56 if self.IsFullRowEmpty(self.Row, dataHeader.RawFieldCount()) {
57
58 // 再次碰空行, 表示确实是空的
59 if meetEmptyLine {
60 break
61
62 } else {
63 meetEmptyLine = true
64 }
65
66 continue
67
68 } else {
69
70 //已经碰过空行, 这里又碰到数据, 说明有人为隔出的空行, 做warning提醒, 防止数据没导出
71 if meetEmptyLine && !warningAfterEmptyLineDataOnce {
72 r, _ := self.GetRC()
73
74 log.Warnf("%s %s|%s(%s)", i18n.String(i18n.DataSheet_RowDataSplitedByEmptyLine), self.file.FileName, self.Name, util.R1C1ToA1(r, 1))
75
76 warningAfterEmptyLineDataOnce = true
77 }
78
79 // 曾经有过空行, 即便现在不是空行也没用, 结束
80 if meetEmptyLine {
81 break
82 }
83
84 }
85
86 line := model.NewLineData()
87
88 // 遍历每一列
89 for self.Column = 0; self.Column < dataHeader.RawFieldCount(); self.Column++ {
90
91 fieldDef, ok := fieldDefGetter(self.Column, dataHeader, parentHeader)
92
93 if !ok {
94 log.Errorf("%s %s|%s(%s)", i18n.String(i18n.DataHeader_FieldNotDefinedInMainTableInMultiTableMode), self.file.FileName, self.Name, util.R1C1ToA1(self.Row+1, self.Column+1))
95 return false
96 }
97
98 op := self.processLine(fieldDef, line, dataHeader)
99
100 if op == lineOp_Continue {

Callers 1

ExportMethod · 0.95

Calls 10

processLineMethod · 0.95
StringFunction · 0.92
R1C1ToA1Function · 0.92
NewLineDataFunction · 0.92
fieldDefGetterFunction · 0.85
IsFullRowEmptyMethod · 0.80
RawFieldCountMethod · 0.80
GetRCMethod · 0.80
RawFieldMethod · 0.80
AddMethod · 0.45

Tested by

no test coverage detected