Skip to content

Commit a8cf38e

Browse files
committed
- New function GetCellHyperLink() added, relate issue qax-os#98;
- go test added
1 parent 5cf3725 commit a8cf38e

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

cell.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,34 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) {
241241
xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, hyperlink)
242242
}
243243

244+
// GetCellHyperLink provides function to get cell hyperlink by given sheet index
245+
// and axis. Boolean type value link will be ture if the cell has a hyperlink
246+
// and the target is the address of the hyperlink. Otherwise, the value of link
247+
// will be false and the value of the target will be a blank string. For example
248+
// get hyperlink of Sheet1!H6:
249+
//
250+
// link, target := xlsx.GetCellHyperLink("Sheet1", "H6")
251+
//
252+
func (f *File) GetCellHyperLink(sheet, axis string) (bool, string) {
253+
var link bool
254+
var target string
255+
xlsx := f.workSheetReader(sheet)
256+
axis = f.mergeCellsParser(xlsx, axis)
257+
if xlsx.Hyperlinks == nil || axis == "" {
258+
return link, target
259+
}
260+
for _, h := range xlsx.Hyperlinks.Hyperlink {
261+
if h.Ref == axis {
262+
link = true
263+
target = h.Location
264+
if h.RID != "" {
265+
target = f.getSheetRelationshipsTargetByID(sheet, h.RID)
266+
}
267+
}
268+
}
269+
return link, target
270+
}
271+
244272
// MergeCell provides function to merge cells by given coordinate area and sheet
245273
// name. For example create a merged cell of D3:E9 on Sheet1:
246274
//

excelize_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,21 @@ func TestSetCellHyperLink(t *testing.T) {
223223
}
224224
}
225225

226+
func TestGetCellHyperLink(t *testing.T) {
227+
xlsx, err := OpenFile("./test/Workbook1.xlsx")
228+
if err != nil {
229+
t.Log(err)
230+
}
231+
link, target := xlsx.GetCellHyperLink("Sheet1", "")
232+
t.Log(link, target)
233+
link, target = xlsx.GetCellHyperLink("Sheet1", "B19")
234+
t.Log(link, target)
235+
link, target = xlsx.GetCellHyperLink("Sheet2", "D6")
236+
t.Log(link, target)
237+
link, target = xlsx.GetCellHyperLink("Sheet3", "H3")
238+
t.Log(link, target)
239+
}
240+
226241
func TestSetCellFormula(t *testing.T) {
227242
xlsx, err := OpenFile("./test/Workbook1.xlsx")
228243
if err != nil {

0 commit comments

Comments
 (0)