This reduces memory usage and speedup the `AddComment` function (#1311)

By load only once for existing comment shapes, improving performance for adding comments in the worksheet
This commit is contained in:
EE 2022-08-10 10:35:33 +08:00 committed by GitHub
parent e07dac5c2e
commit b8ceaf7bf6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 14 deletions

View File

@ -178,6 +178,21 @@ func (f *File) addDrawingVML(commentID int, drawingVML, cell string, lineCount,
}, },
}, },
} }
// load exist comment shapes from xl/drawings/vmlDrawing%d.vml (only once)
d := f.decodeVMLDrawingReader(drawingVML)
if d != nil {
for _, v := range d.Shape {
s := xlsxShape{
ID: "_x0000_s1025",
Type: "#_x0000_t202",
Style: "position:absolute;73.5pt;width:108pt;height:59.25pt;z-index:1;visibility:hidden",
Fillcolor: "#fbf6d6",
Strokecolor: "#edeaa1",
Val: v.Val,
}
vml.Shape = append(vml.Shape, s)
}
}
} }
sp := encodeShape{ sp := encodeShape{
Fill: &vFill{ Fill: &vFill{
@ -222,20 +237,6 @@ func (f *File) addDrawingVML(commentID int, drawingVML, cell string, lineCount,
Strokecolor: "#edeaa1", Strokecolor: "#edeaa1",
Val: string(s[13 : len(s)-14]), Val: string(s[13 : len(s)-14]),
} }
d := f.decodeVMLDrawingReader(drawingVML)
if d != nil {
for _, v := range d.Shape {
s := xlsxShape{
ID: "_x0000_s1025",
Type: "#_x0000_t202",
Style: "position:absolute;73.5pt;width:108pt;height:59.25pt;z-index:1;visibility:hidden",
Fillcolor: "#fbf6d6",
Strokecolor: "#edeaa1",
Val: v.Val,
}
vml.Shape = append(vml.Shape, s)
}
}
vml.Shape = append(vml.Shape, shape) vml.Shape = append(vml.Shape, shape)
f.VMLDrawing[drawingVML] = vml f.VMLDrawing[drawingVML] = vml
return err return err