summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rows.go50
-rw-r--r--sheet.go16
-rw-r--r--test/Workbook1.xlsxbin18311 -> 26846 bytes
-rw-r--r--test/Workbook_2.xlsxbin0 -> 26846 bytes
-rw-r--r--test/Workbook_3.xlsxbin0 -> 6879 bytes
5 files changed, 66 insertions, 0 deletions
diff --git a/rows.go b/rows.go
new file mode 100644
index 0000000..c717c23
--- /dev/null
+++ b/rows.go
@@ -0,0 +1,50 @@
+package excelize
+
+import (
+ "encoding/xml"
+ "strings"
+ "strconv"
+)
+
+
+// GetRows return all the rows in a sheet
+func (f *File) GetRows(sheet string) ([]xlsxRow, error) {
+ var xlsx xlsxWorksheet
+ name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
+ err := xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
+ if ( err != nil ) {
+ return nil, err
+ }
+ rows := xlsx.SheetData.Row
+
+ return rows, nil
+
+}
+
+
+// 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,
+// 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
+}
diff --git a/sheet.go b/sheet.go
index c0e9287..5315d70 100644
--- a/sheet.go
+++ b/sheet.go
@@ -185,6 +185,22 @@ func (f *File) SetActiveSheet(index int) {
return
}
+
+
+func (f *File) GetColumnsLength(sheet string) (int, error) {
+ var xlsx xlsxWorksheet
+ name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
+ err := xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
+ if ( err != nil ) {
+ return -1, err
+ }
+ rows := len(xlsx.SheetData.Row)
+
+ return rows, nil
+
+}
+
+
// Replace xl/workbook.xml XML tags to self-closing for compatible Office Excel 2007.
func workBookCompatibility(workbookMarshal string) string {
workbookMarshal = strings.Replace(workbookMarshal, `xmlns:relationships="http://schemas.openxmlformats.org/officeDocument/2006/relationships" relationships:id="`, `r:id="`, -1)
diff --git a/test/Workbook1.xlsx b/test/Workbook1.xlsx
index d2a9a2e..2ac442a 100644
--- a/test/Workbook1.xlsx
+++ b/test/Workbook1.xlsx
Binary files differ
diff --git a/test/Workbook_2.xlsx b/test/Workbook_2.xlsx
new file mode 100644
index 0000000..efb9785
--- /dev/null
+++ b/test/Workbook_2.xlsx
Binary files differ
diff --git a/test/Workbook_3.xlsx b/test/Workbook_3.xlsx
new file mode 100644
index 0000000..dd63d14
--- /dev/null
+++ b/test/Workbook_3.xlsx
Binary files differ