Fix missing `oneCellAnchor` element after add picture in some cases.

formula
Ri Xu 8 years ago
parent 1e340aea40
commit 109d8adae3

@ -212,14 +212,20 @@ func (f *File) addDrawing(sheet, drawingXML, cell, file string, width, height, r
decodeWsDr := decodeWsDr{}
xml.Unmarshal([]byte(f.readXML(drawingXML)), &decodeWsDr)
cNvPrID = len(decodeWsDr.TwoCellAnchor) + 1
for _, v := range decodeWsDr.OneCellAnchor {
content.WsDr.OneCellAnchor = append(content.WsDr.OneCellAnchor, &xlsxCellAnchor{
EditAs: v.EditAs,
GraphicFrame: v.Content,
})
}
for _, v := range decodeWsDr.TwoCellAnchor {
content.WsDr.TwoCellAnchor = append(content.WsDr.TwoCellAnchor, &xlsxTwoCellAnchor{
content.WsDr.TwoCellAnchor = append(content.WsDr.TwoCellAnchor, &xlsxCellAnchor{
EditAs: v.EditAs,
GraphicFrame: v.Content,
})
}
}
twoCellAnchor := xlsxTwoCellAnchor{}
twoCellAnchor := xlsxCellAnchor{}
twoCellAnchor.EditAs = "oneCell"
from := xlsxFrom{}
from.Col = colStart

File diff suppressed because one or more lines are too long

@ -2,11 +2,11 @@ package excelize
import "encoding/xml"
// decodeTwoCellAnchor directly maps the twoCellAnchor (Two Cell Anchor Shape
// Size). This element specifies a two cell anchor placeholder for a group, a
// shape, or a drawing element. It moves with cells and its extents are in EMU
// units.
type decodeTwoCellAnchor struct {
// decodeCellAnchor directly maps the oneCellAnchor (One Cell Anchor Shape Size)
// and twoCellAnchor (Two Cell Anchor Shape Size). This element specifies a two
// cell anchor placeholder for a group, a shape, or a drawing element. It moves
// with cells and its extents are in EMU units.
type decodeCellAnchor struct {
EditAs string `xml:"editAs,attr,omitempty"`
Content string `xml:",innerxml"`
}
@ -16,8 +16,9 @@ type decodeTwoCellAnchor struct {
// after serialization and deserialization, two different structures are
// defined. decodeWsDr just for deserialization.
type decodeWsDr struct {
A string `xml:"xmlns a,attr"`
Xdr string `xml:"xmlns xdr,attr"`
TwoCellAnchor []*decodeTwoCellAnchor `xml:"twoCellAnchor,omitempty"`
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing wsDr,omitempty"`
A string `xml:"xmlns a,attr"`
Xdr string `xml:"xmlns xdr,attr"`
OneCellAnchor []*decodeCellAnchor `xml:"oneCellAnchor,omitempty"`
TwoCellAnchor []*decodeCellAnchor `xml:"twoCellAnchor,omitempty"`
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing wsDr,omitempty"`
}

@ -162,11 +162,11 @@ type xlsxClientData struct {
FPrintsWithSheet bool `xml:"fPrintsWithSheet,attr"`
}
// xlsxTwoCellAnchor directly maps the twoCellAnchor (Two Cell Anchor Shape
// Size). This element specifies a two cell anchor placeholder for a group, a
// shape, or a drawing element. It moves with cells and its extents are in EMU
// units.
type xlsxTwoCellAnchor struct {
// xlsxCellAnchor directly maps the oneCellAnchor (One Cell Anchor Shape Size)
// and twoCellAnchor (Two Cell Anchor Shape Size). This element specifies a two
// cell anchor placeholder for a group, a shape, or a drawing element. It moves
// with cells and its extents are in EMU units.
type xlsxCellAnchor struct {
EditAs string `xml:"editAs,attr,omitempty"`
From *xlsxFrom `xml:"xdr:from"`
To *xlsxTo `xml:"xdr:to"`
@ -178,9 +178,10 @@ type xlsxTwoCellAnchor struct {
// xlsxWsDr directly maps the root element for a part of this content type shall
// wsDr.
type xlsxWsDr struct {
TwoCellAnchor []*xlsxTwoCellAnchor `xml:"xdr:twoCellAnchor"`
Xdr string `xml:"xmlns:xdr,attr"`
A string `xml:"xmlns:a,attr"`
OneCellAnchor []*xlsxCellAnchor `xml:"xdr:oneCellAnchor"`
TwoCellAnchor []*xlsxCellAnchor `xml:"xdr:twoCellAnchor"`
Xdr string `xml:"xmlns:xdr,attr"`
A string `xml:"xmlns:a,attr"`
}
// encodeWsDr directly maps the element xdr:wsDr.

Loading…
Cancel
Save