From d490a0f86f02f7f2eeabd8a0f38cbaa82a669187 Mon Sep 17 00:00:00 2001 From: jialei <31276367+MichealJl@users.noreply.github.com> Date: Mon, 13 Jun 2022 23:38:59 +0800 Subject: RichTextRun support set superscript and subscript by vertAlign attribute (#1252) check vertical align enumeration, update set rich text docs and test --- cell.go | 28 +++++++++++++++++++++++----- cell_test.go | 23 +++++++++++++++++++---- xmlStyles.go | 1 + 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/cell.go b/cell.go index a302017..6d4c62b 100644 --- a/cell.go +++ b/cell.go @@ -848,7 +848,10 @@ func newRpr(fnt *Font) *xlsxRPr { if fnt.Family != "" { rpr.RFont = &attrValString{Val: &fnt.Family} } - if fnt.Size > 0.0 { + if inStrSlice([]string{"baseline", "superscript", "subscript"}, fnt.VertAlign, true) != -1 { + rpr.VertAlign = &attrValString{Val: &fnt.VertAlign} + } + if fnt.Size > 0 { rpr.Sz = &attrValFloat{Val: &fnt.Size} } if fnt.Color != "" { @@ -895,7 +898,7 @@ func newRpr(fnt *Font) *xlsxRPr { // }, // }, // { -// Text: " italic", +// Text: "italic ", // Font: &excelize.Font{ // Bold: true, // Color: "e83723", @@ -926,19 +929,34 @@ func newRpr(fnt *Font) *xlsxRPr { // }, // }, // { +// Text: " superscript", +// Font: &excelize.Font{ +// Color: "dbc21f", +// VertAlign: "superscript", +// }, +// }, +// { // Text: " and ", // Font: &excelize.Font{ -// Size: 14, -// Color: "ad23e8", +// Size: 14, +// Color: "ad23e8", +// VertAlign: "baseline", // }, // }, // { -// Text: "underline.", +// Text: "underline", // Font: &excelize.Font{ // Color: "23e833", // Underline: "single", // }, // }, +// { +// Text: " subscript.", +// Font: &excelize.Font{ +// Color: "017505", +// VertAlign: "subscript", +// }, +// }, // }); err != nil { // fmt.Println(err) // return diff --git a/cell_test.go b/cell_test.go index da251cd..fb1e8ef 100644 --- a/cell_test.go +++ b/cell_test.go @@ -590,7 +590,7 @@ func TestSetCellRichText(t *testing.T) { }, }, { - Text: "text with color and font-family,", + Text: "text with color and font-family, ", Font: &Font{ Bold: true, Color: "2354e8", @@ -611,20 +611,35 @@ func TestSetCellRichText(t *testing.T) { Strike: true, }, }, + { + Text: " superscript", + Font: &Font{ + Color: "dbc21f", + VertAlign: "superscript", + }, + }, { Text: " and ", Font: &Font{ - Size: 14, - Color: "ad23e8", + Size: 14, + Color: "ad23e8", + VertAlign: "BASELINE", }, }, { - Text: "underline.", + Text: "underline", Font: &Font{ Color: "23e833", Underline: "single", }, }, + { + Text: " subscript.", + Font: &Font{ + Color: "017505", + VertAlign: "subscript", + }, + }, } assert.NoError(t, f.SetCellRichText("Sheet1", "A1", richTextRun)) assert.NoError(t, f.SetCellRichText("Sheet1", "A2", richTextRun)) diff --git a/xmlStyles.go b/xmlStyles.go index 71fe9a6..0000d45 100644 --- a/xmlStyles.go +++ b/xmlStyles.go @@ -341,6 +341,7 @@ type Font struct { Size float64 `json:"size"` Strike bool `json:"strike"` Color string `json:"color"` + VertAlign string `json:"vertAlign"` } // Fill directly maps the fill settings of the cells. -- cgit v1.2.1