Optimize code, go test and godoc updated.

This commit is contained in:
Ri Xu 2017-07-30 15:46:04 +08:00
parent 1d54bd4df6
commit 308776e350
No known key found for this signature in database
GPG Key ID: BA5E5BB1C948EDF7
4 changed files with 25 additions and 30 deletions

36
cell.go
View File

@ -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

View File

@ -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)

View File

@ -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
// --------------------------------+------------------------------------------------------------- // --------------------------------+-------------------------------------------------------------

View File

@ -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