소스 검색

Add a check for maximum limit hyperlinks in a worksheet

typo fixed
xuri 6 년 전
부모
커밋
b45c4b094c
5개의 변경된 파일307개의 추가작업 그리고 289개의 파일을 삭제
  1. 10 4
      cell.go
  2. 9 5
      chart.go
  3. 1 1
      comment.go
  4. 286 278
      excelize_test.go
  5. 1 1
      shape.go

+ 10 - 4
cell.go

@@ -336,7 +336,8 @@ func (f *File) GetCellHyperLink(sheet, axis string) (bool, string, error) {
 // SetCellHyperLink provides a function to set cell hyperlink by given
 // SetCellHyperLink provides a function to set cell hyperlink by given
 // worksheet name and link URL address. LinkType defines two types of
 // worksheet name and link URL address. LinkType defines two types of
 // hyperlink "External" for web site or "Location" for moving to one of cell
 // hyperlink "External" for web site or "Location" for moving to one of cell
-// in this workbook. The below is example for external link.
+// in this workbook. Maximum limit hyperlinks in a worksheet is 65530. The
+// below is example for external link.
 //
 //
 //    err := f.SetCellHyperLink("Sheet1", "A3", "https://github.com/360EntSecGroup-Skylar/excelize", "External")
 //    err := f.SetCellHyperLink("Sheet1", "A3", "https://github.com/360EntSecGroup-Skylar/excelize", "External")
 //    // Set underline and font color style for the cell.
 //    // Set underline and font color style for the cell.
@@ -364,6 +365,14 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) error {
 
 
 	var linkData xlsxHyperlink
 	var linkData xlsxHyperlink
 
 
+	if xlsx.Hyperlinks == nil {
+		xlsx.Hyperlinks = new(xlsxHyperlinks)
+	}
+
+	if len(xlsx.Hyperlinks.Hyperlink) > 65529 {
+		return errors.New("over maximum limit hyperlinks in a worksheet")
+	}
+
 	switch linkType {
 	switch linkType {
 	case "External":
 	case "External":
 		linkData = xlsxHyperlink{
 		linkData = xlsxHyperlink{
@@ -380,9 +389,6 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) error {
 		return fmt.Errorf("invalid link type %q", linkType)
 		return fmt.Errorf("invalid link type %q", linkType)
 	}
 	}
 
 
-	if xlsx.Hyperlinks == nil {
-		xlsx.Hyperlinks = new(xlsxHyperlinks)
-	}
 	xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, linkData)
 	xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, linkData)
 	return nil
 	return nil
 }
 }

+ 9 - 5
chart.go

@@ -314,16 +314,20 @@ func parseFormatChartSet(formatSet string) (*formatChart, error) {
 //    func main() {
 //    func main() {
 //        categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
 //        categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
 //        values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
 //        values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
-//        xlsx := excelize.NewFile()
+//        f := excelize.NewFile()
 //        for k, v := range categories {
 //        for k, v := range categories {
-//            xlsx.SetCellValue("Sheet1", k, v)
+//            f.SetCellValue("Sheet1", k, v)
 //        }
 //        }
 //        for k, v := range values {
 //        for k, v := range values {
-//            xlsx.SetCellValue("Sheet1", k, v)
+//            f.SetCellValue("Sheet1", k, v)
+//        }
+//        err := f.AddChart("Sheet1", "E1", `{"type":"col3DClustered","dimension":{"width":640,"height":480},"series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Clustered Column Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero","x_axis":{"reverse_order":true},"y_axis":{"maximum":7.5,"minimum":0.5}}`)
+//        if err != nil {
+//            fmt.Println(err)
+//            return
 //        }
 //        }
-//        xlsx.AddChart("Sheet1", "E1", `{"type":"col3DClustered","dimension":{"width":640,"height":480},"series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Clustered Column Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero","x_axis":{"reverse_order":true},"y_axis":{"maximum":7.5,"minimum":0.5}}`)
 //        // Save xlsx file by the given path.
 //        // Save xlsx file by the given path.
-//        err := xlsx.SaveAs("./Book1.xlsx")
+//        err = xlsx.SaveAs("./Book1.xlsx")
 //        if err != nil {
 //        if err != nil {
 //            fmt.Println(err)
 //            fmt.Println(err)
 //        }
 //        }

+ 1 - 1
comment.go

@@ -72,7 +72,7 @@ func (f *File) getSheetComments(sheetID int) string {
 // author length is 255 and the max text length is 32512. For example, add a
 // author length is 255 and the max text length is 32512. For example, add a
 // comment in Sheet1!$A$30:
 // comment in Sheet1!$A$30:
 //
 //
-//    err := xlsx.AddComment("Sheet1", "A30", `{"author":"Excelize: ","text":"This is a comment."}`)
+//    err := f.AddComment("Sheet1", "A30", `{"author":"Excelize: ","text":"This is a comment."}`)
 //
 //
 func (f *File) AddComment(sheet, cell, format string) error {
 func (f *File) AddComment(sheet, cell, format string) error {
 	formatSet, err := parseFormatCommentsSet(format)
 	formatSet, err := parseFormatCommentsSet(format)

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 286 - 278
excelize_test.go


+ 1 - 1
shape.go

@@ -40,7 +40,7 @@ func parseFormatShapeSet(formatSet string) (*formatShape, error) {
 // print settings) and properties set. For example, add text box (rect shape)
 // print settings) and properties set. For example, add text box (rect shape)
 // in Sheet1:
 // in Sheet1:
 //
 //
-//    f.AddShape("Sheet1", "G6", `{"type":"rect","color":{"line":"#4286F4","fill":"#8eb9ff"},"paragraph":[{"text":"Rectangle Shape","font":{"bold":true,"italic":true,"family":"Berlin Sans FB Demi","size":36,"color":"#777777","underline":"sng"}}],"width":180,"height": 90}`)
+//    err := f.AddShape("Sheet1", "G6", `{"type":"rect","color":{"line":"#4286F4","fill":"#8eb9ff"},"paragraph":[{"text":"Rectangle Shape","font":{"bold":true,"italic":true,"family":"Berlin Sans FB Demi","size":36,"color":"#777777","underline":"sng"}}],"width":180,"height": 90}`)
 //
 //
 // The following shows the type of shape supported by excelize:
 // The following shows the type of shape supported by excelize:
 //
 //

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.