From a13ef5545ec79108477910346ae4cab82ab8bbda Mon Sep 17 00:00:00 2001 From: xuri Date: Tue, 27 Apr 2021 04:46:51 +0000 Subject: [PATCH] This closes #825, closes #829, closes #830, fix issue when get and add comments on multi authors --- comment.go | 21 ++++++++++----------- xmlComments.go | 4 ++-- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/comment.go b/comment.go index 705b957..b05f308 100644 --- a/comment.go +++ b/comment.go @@ -43,15 +43,15 @@ func (f *File) GetComments() (comments map[string][]Comment) { if target == "" { continue } - if !filepath.IsAbs(target) { + if !strings.HasPrefix(target, "/") { target = "xl" + strings.TrimPrefix(target, "..") } if d := f.commentsReader(strings.TrimPrefix(target, "/")); d != nil { sheetComments := []Comment{} for _, comment := range d.CommentList.Comment { sheetComment := Comment{} - if comment.AuthorID < len(d.Authors) { - sheetComment.Author = d.Authors[comment.AuthorID].Author + if comment.AuthorID < len(d.Authors.Author) { + sheetComment.Author = d.Authors.Author[comment.AuthorID] } sheetComment.Ref = comment.Ref sheetComment.AuthorID = comment.AuthorID @@ -250,20 +250,19 @@ func (f *File) addComment(commentsXML, cell string, formatSet *formatComment) { t = t[0:32512] } comments := f.commentsReader(commentsXML) + authorID := 0 if comments == nil { - comments = &xlsxComments{ - Authors: []xlsxAuthor{ - { - Author: formatSet.Author, - }, - }, - } + comments = &xlsxComments{Authors: xlsxAuthor{Author: []string{formatSet.Author}}} + } + if inStrSlice(comments.Authors.Author, formatSet.Author) == -1 { + comments.Authors.Author = append(comments.Authors.Author, formatSet.Author) + authorID = len(comments.Authors.Author) - 1 } defaultFont := f.GetDefaultFont() bold := "" cmt := xlsxComment{ Ref: cell, - AuthorID: 0, + AuthorID: authorID, Text: xlsxText{ R: []xlsxR{ { diff --git a/xmlComments.go b/xmlComments.go index e39fb24..7965c86 100644 --- a/xmlComments.go +++ b/xmlComments.go @@ -24,7 +24,7 @@ import "encoding/xml" // something special about the cell. type xlsxComments struct { XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main comments"` - Authors []xlsxAuthor `xml:"authors"` + Authors xlsxAuthor `xml:"authors"` CommentList xlsxCommentList `xml:"commentList"` } @@ -33,7 +33,7 @@ type xlsxComments struct { // have an author. The maximum length of the author string is an implementation // detail, but a good guideline is 255 chars. type xlsxAuthor struct { - Author string `xml:"author"` + Author []string `xml:"author"` } // xlsxCommentList (List of Comments) directly maps the xlsxCommentList element.