Skip to content

Commit 905be46

Browse files
committed
Improve code readability.
1 parent d4df70b commit 905be46

File tree

8 files changed

+161
-151
lines changed

8 files changed

+161
-151
lines changed

README.md

+2-9
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ package main
3030

3131
import (
3232
"fmt"
33-
"os"
3433

3534
"github.com/xuri/excelize"
3635
)
@@ -48,7 +47,6 @@ func main() {
4847
err := xlsx.SaveAs("./Workbook.xlsx")
4948
if err != nil {
5049
fmt.Println(err)
51-
os.Exit(1)
5250
}
5351
}
5452
```
@@ -62,7 +60,6 @@ package main
6260

6361
import (
6462
"fmt"
65-
"os"
6663

6764
"github.com/xuri/excelize"
6865
)
@@ -71,7 +68,7 @@ func main() {
7168
xlsx, err := excelize.OpenFile("./Workbook.xlsx")
7269
if err != nil {
7370
fmt.Println(err)
74-
os.Exit(1)
71+
return
7572
}
7673
// Get value from cell by given worksheet name and axis.
7774
cell := xlsx.GetCellValue("Sheet1", "B2")
@@ -99,7 +96,6 @@ package main
9996

10097
import (
10198
"fmt"
102-
"os"
10399

104100
"github.com/xuri/excelize"
105101
)
@@ -119,7 +115,6 @@ func main() {
119115
err := xlsx.SaveAs("./Workbook.xlsx")
120116
if err != nil {
121117
fmt.Println(err)
122-
os.Exit(1)
123118
}
124119
}
125120
```
@@ -131,7 +126,6 @@ package main
131126

132127
import (
133128
"fmt"
134-
"os"
135129
_ "image/gif"
136130
_ "image/jpeg"
137131
_ "image/png"
@@ -143,7 +137,7 @@ func main() {
143137
xlsx, err := excelize.OpenFile("./Workbook.xlsx")
144138
if err != nil {
145139
fmt.Println(err)
146-
os.Exit(1)
140+
return
147141
}
148142
// Insert a picture.
149143
err = xlsx.AddPicture("Sheet1", "A2", "./image1.png", "")
@@ -164,7 +158,6 @@ func main() {
164158
err = xlsx.Save()
165159
if err != nil {
166160
fmt.Println(err)
167-
os.Exit(1)
168161
}
169162
}
170163
```

cell.go

+13-17
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,13 @@ func (f *File) GetCellValue(sheet, axis string) string {
9292
return ""
9393
}
9494
for _, v := range xlsx.SheetData.Row {
95-
if v.R != row {
96-
continue
97-
}
98-
for _, r := range v.C {
99-
if axis != r.R {
100-
continue
95+
if v.R == row {
96+
for _, r := range v.C {
97+
if axis == r.R {
98+
val, _ := r.getValueFrom(f, f.sharedStringsReader())
99+
return val
100+
}
101101
}
102-
val, _ := r.getValueFrom(f, f.sharedStringsReader())
103-
return val
104102
}
105103
}
106104
return ""
@@ -164,15 +162,13 @@ func (f *File) GetCellFormula(sheet, axis string) string {
164162
return ""
165163
}
166164
for _, v := range xlsx.SheetData.Row {
167-
if v.R != row {
168-
continue
169-
}
170-
for _, f := range v.C {
171-
if axis != f.R {
172-
continue
173-
}
174-
if f.F != nil {
175-
return f.F.Content
165+
if v.R == row {
166+
for _, f := range v.C {
167+
if axis == f.R {
168+
if f.F != nil {
169+
return f.F.Content
170+
}
171+
}
176172
}
177173
}
178174
}

chart.go

+46-7
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,52 @@ const (
2121

2222
// This section defines the default value of chart properties.
2323
var (
24-
chartView3DRotX = map[string]int{Bar: 0, Bar3D: 15, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 30, Radar: 0, Scatter: 0}
25-
chartView3DRotY = map[string]int{Bar: 0, Bar3D: 20, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 0, Radar: 0, Scatter: 0}
26-
chartView3DDepthPercent = map[string]int{Bar: 100, Bar3D: 100, Doughnut: 100, Line: 100, Pie: 100, Pie3D: 100, Radar: 100, Scatter: 100}
27-
chartView3DRAngAx = map[string]int{Bar: 0, Bar3D: 1, Doughnut: 0, Line: 0, Pie: 0, Pie3D: 0, Radar: 0, Scatter: 0}
28-
chartLegendPosition = map[string]string{"bottom": "b", "left": "l", "right": "r", "top": "t", "top_right": "tr"}
24+
chartView3DRotX = map[string]int{
25+
Bar: 0,
26+
Bar3D: 15,
27+
Doughnut: 0,
28+
Line: 0,
29+
Pie: 0,
30+
Pie3D: 30,
31+
Radar: 0,
32+
Scatter: 0,
33+
}
34+
chartView3DRotY = map[string]int{
35+
Bar: 0,
36+
Bar3D: 20,
37+
Doughnut: 0,
38+
Line: 0,
39+
Pie: 0,
40+
Pie3D: 0,
41+
Radar: 0,
42+
Scatter: 0,
43+
}
44+
chartView3DDepthPercent = map[string]int{
45+
Bar: 100,
46+
Bar3D: 100,
47+
Doughnut: 100,
48+
Line: 100,
49+
Pie: 100,
50+
Pie3D: 100,
51+
Radar: 100,
52+
Scatter: 100,
53+
}
54+
chartView3DRAngAx = map[string]int{
55+
Bar: 0,
56+
Bar3D: 1,
57+
Doughnut: 0,
58+
Line: 0,
59+
Pie: 0,
60+
Pie3D: 0,
61+
Radar: 0,
62+
Scatter: 0}
63+
chartLegendPosition = map[string]string{
64+
"bottom": "b",
65+
"left": "l",
66+
"right": "r",
67+
"top": "t",
68+
"top_right": "tr",
69+
}
2970
)
3071

3172
// parseFormatChartSet provides function to parse the format settings of the
@@ -63,7 +104,6 @@ func parseFormatChartSet(formatSet string) *formatChart {
63104
//
64105
// import (
65106
// "fmt"
66-
// "os"
67107
//
68108
// "github.com/xuri/excelize"
69109
// )
@@ -83,7 +123,6 @@ func parseFormatChartSet(formatSet string) *formatChart {
83123
// err := xlsx.SaveAs("./Workbook.xlsx")
84124
// if err != nil {
85125
// fmt.Println(err)
86-
// os.Exit(1)
87126
// }
88127
// }
89128
//

excelize.go

+13-14
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ func checkSheet(xlsx *xlsxWorksheet) {
120120
_, ok := existsRows[i+1]
121121
if ok {
122122
sheetData.Row = append(sheetData.Row, xlsx.SheetData.Row[existsRows[i+1]])
123-
continue
123+
} else {
124+
sheetData.Row = append(sheetData.Row, xlsxRow{
125+
R: i + 1,
126+
})
124127
}
125-
sheetData.Row = append(sheetData.Row, xlsxRow{
126-
R: i + 1,
127-
})
128128
}
129129
xlsx.SheetData = sheetData
130130
}
@@ -223,16 +223,15 @@ func (f *File) adjustRowDimensions(xlsx *xlsxWorksheet, rowIndex, offset int) {
223223
return
224224
}
225225
for i, r := range xlsx.SheetData.Row {
226-
if r.R < rowIndex {
227-
continue
228-
}
229-
xlsx.SheetData.Row[i].R += offset
230-
for k, v := range xlsx.SheetData.Row[i].C {
231-
axis := v.R
232-
col := string(strings.Map(letterOnlyMapF, axis))
233-
row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis))
234-
xAxis := row + offset
235-
xlsx.SheetData.Row[i].C[k].R = col + strconv.Itoa(xAxis)
226+
if r.R >= rowIndex {
227+
xlsx.SheetData.Row[i].R += offset
228+
for k, v := range xlsx.SheetData.Row[i].C {
229+
axis := v.R
230+
col := string(strings.Map(letterOnlyMapF, axis))
231+
row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis))
232+
xAxis := row + offset
233+
xlsx.SheetData.Row[i].C[k].R = col + strconv.Itoa(xAxis)
234+
}
236235
}
237236
}
238237
}

picture.go

+11-18
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ func parseFormatPictureSet(formatSet string) *formatPicture {
3838
//
3939
// import (
4040
// "fmt"
41-
// "os"
4241
// _ "image/gif"
4342
// _ "image/jpeg"
4443
// _ "image/png"
@@ -66,7 +65,6 @@ func parseFormatPictureSet(formatSet string) *formatPicture {
6665
// err = xlsx.SaveAs("./Workbook.xlsx")
6766
// if err != nil {
6867
// fmt.Println(err)
69-
// os.Exit(1)
7068
// }
7169
// }
7270
//
@@ -135,10 +133,9 @@ func (f *File) deleteSheetRelationships(sheet, rID string) {
135133
var sheetRels xlsxWorkbookRels
136134
xml.Unmarshal([]byte(f.readXML(rels)), &sheetRels)
137135
for k, v := range sheetRels.Relationships {
138-
if v.ID != rID {
139-
continue
136+
if v.ID == rID {
137+
sheetRels.Relationships = append(sheetRels.Relationships[:k], sheetRels.Relationships[k+1:]...)
140138
}
141-
sheetRels.Relationships = append(sheetRels.Relationships[:k], sheetRels.Relationships[k+1:]...)
142139
}
143140
output, _ := xml.Marshal(sheetRels)
144141
f.saveFileList(rels, string(output))
@@ -415,17 +412,14 @@ func (f *File) GetPicture(sheet, cell string) (string, []byte) {
415412
for _, anchor := range decodeWsDr.TwoCellAnchor {
416413
decodeTwoCellAnchor := decodeTwoCellAnchor{}
417414
xml.Unmarshal([]byte("<decodeTwoCellAnchor>"+anchor.Content+"</decodeTwoCellAnchor>"), &decodeTwoCellAnchor)
418-
if decodeTwoCellAnchor.From == nil || decodeTwoCellAnchor.Pic == nil {
419-
continue
420-
}
421-
if decodeTwoCellAnchor.From.Col == col && decodeTwoCellAnchor.From.Row == row {
422-
xlsxWorkbookRelation := f.getDrawingRelationships(drawingRelationships, decodeTwoCellAnchor.Pic.BlipFill.Blip.Embed)
423-
_, ok := supportImageTypes[filepath.Ext(xlsxWorkbookRelation.Target)]
424-
if !ok {
425-
continue
415+
if decodeTwoCellAnchor.From != nil && decodeTwoCellAnchor.Pic != nil {
416+
if decodeTwoCellAnchor.From.Col == col && decodeTwoCellAnchor.From.Row == row {
417+
xlsxWorkbookRelation := f.getDrawingRelationships(drawingRelationships, decodeTwoCellAnchor.Pic.BlipFill.Blip.Embed)
418+
_, ok := supportImageTypes[filepath.Ext(xlsxWorkbookRelation.Target)]
419+
if ok {
420+
return filepath.Base(xlsxWorkbookRelation.Target), []byte(f.XLSX[strings.Replace(xlsxWorkbookRelation.Target, "..", "xl", -1)])
421+
}
426422
}
427-
428-
return filepath.Base(xlsxWorkbookRelation.Target), []byte(f.XLSX[strings.Replace(xlsxWorkbookRelation.Target, "..", "xl", -1)])
429423
}
430424
}
431425
return "", []byte{}
@@ -441,10 +435,9 @@ func (f *File) getDrawingRelationships(rels, rID string) *xlsxWorkbookRelation {
441435
var drawingRels xlsxWorkbookRels
442436
xml.Unmarshal([]byte(f.readXML(rels)), &drawingRels)
443437
for _, v := range drawingRels.Relationships {
444-
if v.ID != rID {
445-
continue
438+
if v.ID == rID {
439+
return &v
446440
}
447-
return &v
448441
}
449442
return nil
450443
}

rows.go

+25-27
Original file line numberDiff line numberDiff line change
@@ -219,12 +219,11 @@ func (f *File) RemoveRow(sheet string, row int) {
219219
xlsx := f.workSheetReader(sheet)
220220
row++
221221
for i, r := range xlsx.SheetData.Row {
222-
if r.R != row {
223-
continue
222+
if r.R == row {
223+
xlsx.SheetData.Row = append(xlsx.SheetData.Row[:i], xlsx.SheetData.Row[i+1:]...)
224+
f.adjustHelper(sheet, -1, row, -1)
225+
return
224226
}
225-
xlsx.SheetData.Row = append(xlsx.SheetData.Row[:i], xlsx.SheetData.Row[i+1:]...)
226-
f.adjustHelper(sheet, -1, row, -1)
227-
return
228227
}
229228
}
230229

@@ -269,28 +268,27 @@ func checkRow(xlsx *xlsxWorksheet) {
269268
buffer := bytes.Buffer{}
270269
for k, v := range xlsx.SheetData.Row {
271270
lenCol := len(v.C)
272-
if lenCol < 1 {
273-
continue
274-
}
275-
endR := string(strings.Map(letterOnlyMapF, v.C[lenCol-1].R))
276-
endRow, _ := strconv.Atoi(strings.Map(intOnlyMapF, v.C[lenCol-1].R))
277-
endCol := TitleToNumber(endR) + 1
278-
if lenCol < endCol {
279-
oldRow := xlsx.SheetData.Row[k].C
280-
xlsx.SheetData.Row[k].C = xlsx.SheetData.Row[k].C[:0]
281-
tmp := []xlsxC{}
282-
for i := 0; i <= endCol; i++ {
283-
buffer.WriteString(ToAlphaString(i))
284-
buffer.WriteString(strconv.Itoa(endRow))
285-
tmp = append(tmp, xlsxC{
286-
R: buffer.String(),
287-
})
288-
buffer.Reset()
289-
}
290-
xlsx.SheetData.Row[k].C = tmp
291-
for _, y := range oldRow {
292-
colAxis := TitleToNumber(string(strings.Map(letterOnlyMapF, y.R)))
293-
xlsx.SheetData.Row[k].C[colAxis] = y
271+
if lenCol > 0 {
272+
endR := string(strings.Map(letterOnlyMapF, v.C[lenCol-1].R))
273+
endRow, _ := strconv.Atoi(strings.Map(intOnlyMapF, v.C[lenCol-1].R))
274+
endCol := TitleToNumber(endR) + 1
275+
if lenCol < endCol {
276+
oldRow := xlsx.SheetData.Row[k].C
277+
xlsx.SheetData.Row[k].C = xlsx.SheetData.Row[k].C[:0]
278+
tmp := []xlsxC{}
279+
for i := 0; i <= endCol; i++ {
280+
buffer.WriteString(ToAlphaString(i))
281+
buffer.WriteString(strconv.Itoa(endRow))
282+
tmp = append(tmp, xlsxC{
283+
R: buffer.String(),
284+
})
285+
buffer.Reset()
286+
}
287+
xlsx.SheetData.Row[k].C = tmp
288+
for _, y := range oldRow {
289+
colAxis := TitleToNumber(string(strings.Map(letterOnlyMapF, y.R)))
290+
xlsx.SheetData.Row[k].C[colAxis] = y
291+
}
294292
}
295293
}
296294
}

0 commit comments

Comments
 (0)