summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--excelize_test.go10
-rw-r--r--rows.go72
-rw-r--r--test/Workbook1.xlsxbin26846 -> 18311 bytes
-rw-r--r--test/Workbook_2.xlsxbin26846 -> 0 bytes
-rw-r--r--test/Workbook_3.xlsxbin6879 -> 0 bytes
5 files changed, 53 insertions, 29 deletions
diff --git a/excelize_test.go b/excelize_test.go
index 292b358..887fea8 100644
--- a/excelize_test.go
+++ b/excelize_test.go
@@ -11,6 +11,16 @@ func TestExcelize(t *testing.T) {
if err != nil {
t.Log(err)
}
+ // Test get all the rows in a not exists sheet.
+ rows := f1.GetRows("Sheet4")
+ // Test get all the rows in a sheet.
+ rows = f1.GetRows("Sheet2")
+ for _, row := range rows {
+ for _, cell := range row {
+ t.Log(cell, "\t")
+ }
+ t.Log("\r\n")
+ }
f1.UpdateLinkedValue()
f1.SetCellInt("SHEET2", "A1", 100)
f1.SetCellStr("SHEET2", "C11", "Knowns")
diff --git a/rows.go b/rows.go
index c717c23..90cabee 100644
--- a/rows.go
+++ b/rows.go
@@ -2,49 +2,63 @@ package excelize
import (
"encoding/xml"
+ "strconv"
"strings"
- "strconv"
)
-
-// GetRows return all the rows in a sheet
-func (f *File) GetRows(sheet string) ([]xlsxRow, error) {
- var xlsx xlsxWorksheet
+// GetRows return all the rows in a sheet, for example:
+//
+// rows := xlsx.GetRows("Sheet2")
+// for _, row := range rows {
+// for _, colCell := range row {
+// fmt.Print(colCell, "\t")
+// }
+// fmt.Println()
+// }
+//
+func (f *File) GetRows(sheet string) [][]string {
+ xlsx := xlsxWorksheet{}
+ r := [][]string{}
name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
err := xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
- if ( err != nil ) {
- return nil, err
+ if err != nil {
+ return r
}
rows := xlsx.SheetData.Row
-
- return rows, nil
-
+ for _, row := range rows {
+ c := []string{}
+ for _, colCell := range row.C {
+ val, _ := colCell.getValueFrom(f)
+ c = append(c, val)
+ }
+ r = append(r, c)
+ }
+ return r
}
-
-// readXMLSST read xmlSST simple function
+// readXMLSST read xmlSST simple function.
func readXMLSST(f *File) (xlsxSST, error) {
shardStrings := xlsxSST{}
err := xml.Unmarshal([]byte(f.readXML(`xl/sharedStrings.xml`)), &shardStrings)
return shardStrings, err
}
-// GetValueFrom return a value from a column/row cell,
+// getValueFrom return a value from a column/row cell,
// this function is inteded to be used with for range on rows
-// an argument with the xlsx opened file
-func (self* xlsxC) GetValueFrom(f *File) (string, error) {
- switch self.T {
- case "s":
- xlsxSI := 0
- xlsxSI, _ = strconv.Atoi(self.V)
- d, err := readXMLSST(f)
- if ( err != nil ) {
- return "", err
- }
- return d.SI[xlsxSI].T, nil
- case "str":
- return self.V, nil
- default:
- return self.V, nil
- } // switch
+// an argument with the xlsx opened file.
+func (xlsx *xlsxC) getValueFrom(f *File) (string, error) {
+ switch xlsx.T {
+ case "s":
+ xlsxSI := 0
+ xlsxSI, _ = strconv.Atoi(xlsx.V)
+ d, err := readXMLSST(f)
+ if err != nil {
+ return "", err
+ }
+ return d.SI[xlsxSI].T, nil
+ case "str":
+ return xlsx.V, nil
+ default:
+ return xlsx.V, nil
+ }
}
diff --git a/test/Workbook1.xlsx b/test/Workbook1.xlsx
index 2ac442a..d2a9a2e 100644
--- a/test/Workbook1.xlsx
+++ b/test/Workbook1.xlsx
Binary files differ
diff --git a/test/Workbook_2.xlsx b/test/Workbook_2.xlsx
deleted file mode 100644
index efb9785..0000000
--- a/test/Workbook_2.xlsx
+++ /dev/null
Binary files differ
diff --git a/test/Workbook_3.xlsx b/test/Workbook_3.xlsx
deleted file mode 100644
index dd63d14..0000000
--- a/test/Workbook_3.xlsx
+++ /dev/null
Binary files differ