Optimize code, go test and godoc updated.
This commit is contained in:
parent
1d54bd4df6
commit
308776e350
36
cell.go
36
cell.go
|
@ -215,34 +215,30 @@ func (f *File) SetCellFormula(sheet, axis, formula string) {
|
||||||
// style, _ := xlsx.NewStyle(`{"font":{"color":"#1265BE","underline":"single"}}`)
|
// style, _ := xlsx.NewStyle(`{"font":{"color":"#1265BE","underline":"single"}}`)
|
||||||
// xlsx.SetCellStyle("Sheet1", "A3", "A3", style)
|
// xlsx.SetCellStyle("Sheet1", "A3", "A3", style)
|
||||||
//
|
//
|
||||||
// A this is another example for "Location"
|
// A this is another example for "Location":
|
||||||
//
|
//
|
||||||
// xlsx.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
|
// xlsx.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
|
||||||
|
//
|
||||||
func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) {
|
func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) {
|
||||||
xlsx := f.workSheetReader(sheet)
|
xlsx := f.workSheetReader(sheet)
|
||||||
axis = f.mergeCellsParser(xlsx, axis)
|
axis = f.mergeCellsParser(xlsx, axis)
|
||||||
var hyperlink xlsxHyperlink
|
linkTypes := map[string]xlsxHyperlink{
|
||||||
|
"External": {},
|
||||||
|
"Location": {Location: link},
|
||||||
|
}
|
||||||
|
hyperlink, ok := linkTypes[linkType]
|
||||||
|
if !ok || axis == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
hyperlink.Ref = axis
|
||||||
if linkType == "External" {
|
if linkType == "External" {
|
||||||
rID := f.addSheetRelationships(sheet, SourceRelationshipHyperLink, link, "External")
|
rID := f.addSheetRelationships(sheet, SourceRelationshipHyperLink, link, linkType)
|
||||||
hyperlink = xlsxHyperlink{
|
hyperlink.RID = "rId" + strconv.Itoa(rID)
|
||||||
Ref: axis,
|
|
||||||
RID: "rId" + strconv.Itoa(rID),
|
|
||||||
}
|
|
||||||
} else if linkType == "Location" {
|
|
||||||
hyperlink = xlsxHyperlink{
|
|
||||||
Ref: axis,
|
|
||||||
Location: link,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if hyperlink.Ref == "" {
|
if xlsx.Hyperlinks == nil {
|
||||||
panic("linkType only support External and Location now")
|
xlsx.Hyperlinks = &xlsxHyperlinks{}
|
||||||
} else if xlsx.Hyperlinks != nil {
|
|
||||||
xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, hyperlink)
|
|
||||||
} else {
|
|
||||||
hyperlinks := xlsxHyperlinks{}
|
|
||||||
hyperlinks.Hyperlink = append(hyperlinks.Hyperlink, hyperlink)
|
|
||||||
xlsx.Hyperlinks = &hyperlinks
|
|
||||||
}
|
}
|
||||||
|
xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, hyperlink)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MergeCell provides function to merge cells by given coordinate area and sheet
|
// MergeCell provides function to merge cells by given coordinate area and sheet
|
||||||
|
|
|
@ -213,6 +213,10 @@ func TestSetCellHyperLink(t *testing.T) {
|
||||||
xlsx.SetCellHyperLink("sheet1", "B19", "https://github.com/xuri/excelize", "External")
|
xlsx.SetCellHyperLink("sheet1", "B19", "https://github.com/xuri/excelize", "External")
|
||||||
// Test add first hyperlink in a work sheet.
|
// Test add first hyperlink in a work sheet.
|
||||||
xlsx.SetCellHyperLink("sheet2", "C1", "https://github.com/xuri/excelize", "External")
|
xlsx.SetCellHyperLink("sheet2", "C1", "https://github.com/xuri/excelize", "External")
|
||||||
|
// Test add Location hyperlink in a work sheet.
|
||||||
|
xlsx.SetCellHyperLink("sheet2", "D6", "Sheet1!D8", "Location")
|
||||||
|
xlsx.SetCellHyperLink("sheet2", "C3", "Sheet1!D8", "")
|
||||||
|
xlsx.SetCellHyperLink("sheet2", "", "Sheet1!D60", "Location")
|
||||||
err = xlsx.Save()
|
err = xlsx.Save()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Log(err)
|
t.Log(err)
|
||||||
|
|
2
sheet.go
2
sheet.go
|
@ -547,7 +547,7 @@ func parseFormatPanesSet(formatSet string) *formatPanes {
|
||||||
// | regions. In that case, this value specifies the right
|
// | regions. In that case, this value specifies the right
|
||||||
// | pane.
|
// | pane.
|
||||||
//
|
//
|
||||||
// Pane state type is restricted to the values supported currently listed in the following table:
|
// Pane state type is restricted to the values supported currently listed in the following table:
|
||||||
//
|
//
|
||||||
// Enumeration Value | Description
|
// Enumeration Value | Description
|
||||||
// --------------------------------+-------------------------------------------------------------
|
// --------------------------------+-------------------------------------------------------------
|
||||||
|
|
13
table.go
13
table.go
|
@ -88,16 +88,11 @@ func (f *File) addSheetTable(sheet string, rID int) {
|
||||||
table := &xlsxTablePart{
|
table := &xlsxTablePart{
|
||||||
RID: "rId" + strconv.Itoa(rID),
|
RID: "rId" + strconv.Itoa(rID),
|
||||||
}
|
}
|
||||||
if xlsx.TableParts != nil {
|
if xlsx.TableParts == nil {
|
||||||
xlsx.TableParts.Count++
|
xlsx.TableParts = &xlsxTableParts{}
|
||||||
xlsx.TableParts.TableParts = append(xlsx.TableParts.TableParts, table)
|
|
||||||
} else {
|
|
||||||
xlsx.TableParts = &xlsxTableParts{
|
|
||||||
Count: 1,
|
|
||||||
TableParts: []*xlsxTablePart{table},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
xlsx.TableParts.Count++
|
||||||
|
xlsx.TableParts.TableParts = append(xlsx.TableParts.TableParts, table)
|
||||||
}
|
}
|
||||||
|
|
||||||
// addTable provides function to add table by given sheet index, coordinate area
|
// addTable provides function to add table by given sheet index, coordinate area
|
||||||
|
|
Loading…
Reference in New Issue