108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
(sort (hash-table-keys cols)(lambda (a b)
(let ((colnum-a (assoc a ref-colnums))
(colnum-b (assoc b ref-colnums)))
(if (and colnum-a colnum-b)
(< (cadr colnum-a)(cadr colnum-b))
(if (and (string? a)
(string? b))
(string< a b))))))))))))
(define (extract-txtdb dat targdir)
(let* ((wrkbk (find-section dat 'http://www.gnumeric.org/v10.dtd:Workbook))
(wrk-rem (remove-section dat 'http://www.gnumeric.org/v10.dtd:Workbook))
(sheets (find-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets))
(sht-rem (remove-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets)))
(create-directory targdir)
(with-output-to-file (conc targdir "/workbook.sxml")
(lambda ()
(pp wrk-rem)))
(with-output-to-file (conc targdir "/sheets.sxml")
(lambda ()
(pp sht-rem)))
(for-each (lambda (sheet)
(sheet->txtdb sheet targdir))
sheets)))
#|
|
|
>
>
>
|
|
|
|
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
(sort (hash-table-keys cols)(lambda (a b)
(let ((colnum-a (assoc a ref-colnums))
(colnum-b (assoc b ref-colnums)))
(if (and colnum-a colnum-b)
(< (cadr colnum-a)(cadr colnum-b))
(if (and (string? a)
(string? b))
(string< a b))))))))))
(with-output-to-file (conc targdir "/sxml/" sheet-name ".sxml")
(lambda ()
(pp remaining)))))
(define (extract-txtdb dat targdir)
(let* ((wrkbk (find-section dat 'http://www.gnumeric.org/v10.dtd:Workbook))
(wrk-rem (remove-section dat 'http://www.gnumeric.org/v10.dtd:Workbook))
(sheets (find-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets))
(sht-rem (remove-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets)))
(create-directory (conc targdir "/sxml") #t)
(with-output-to-file (conc targdir "/sxml/workbook.sxml")
(lambda ()
(pp wrk-rem)))
(with-output-to-file (conc targdir "/sxml/sheets.sxml")
(lambda ()
(pp sht-rem)))
(for-each (lambda (sheet)
(sheet->txtdb sheet targdir))
sheets)))
#|
|