roo 1.13.2 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +17 -0
  3. data/.github/issue_template.md +16 -0
  4. data/.github/pull_request_template.md +14 -0
  5. data/.github/workflows/pull-request.yml +15 -0
  6. data/.github/workflows/ruby.yml +34 -0
  7. data/.gitignore +11 -0
  8. data/.rubocop.yml +186 -0
  9. data/.simplecov +4 -0
  10. data/CHANGELOG.md +702 -0
  11. data/Gemfile +18 -12
  12. data/Guardfile +23 -0
  13. data/LICENSE +5 -1
  14. data/README.md +328 -0
  15. data/Rakefile +23 -23
  16. data/examples/roo_soap_client.rb +28 -31
  17. data/examples/roo_soap_server.rb +4 -6
  18. data/examples/write_me.rb +9 -10
  19. data/lib/roo/base.rb +317 -504
  20. data/lib/roo/constants.rb +7 -0
  21. data/lib/roo/csv.rb +141 -113
  22. data/lib/roo/errors.rb +11 -0
  23. data/lib/roo/excelx/cell/base.rb +108 -0
  24. data/lib/roo/excelx/cell/boolean.rb +30 -0
  25. data/lib/roo/excelx/cell/date.rb +28 -0
  26. data/lib/roo/excelx/cell/datetime.rb +107 -0
  27. data/lib/roo/excelx/cell/empty.rb +20 -0
  28. data/lib/roo/excelx/cell/number.rb +99 -0
  29. data/lib/roo/excelx/cell/string.rb +19 -0
  30. data/lib/roo/excelx/cell/time.rb +44 -0
  31. data/lib/roo/excelx/cell.rb +110 -0
  32. data/lib/roo/excelx/comments.rb +55 -0
  33. data/lib/roo/excelx/coordinate.rb +19 -0
  34. data/lib/roo/excelx/extractor.rb +39 -0
  35. data/lib/roo/excelx/format.rb +71 -0
  36. data/lib/roo/excelx/images.rb +26 -0
  37. data/lib/roo/excelx/relationships.rb +33 -0
  38. data/lib/roo/excelx/shared.rb +39 -0
  39. data/lib/roo/excelx/shared_strings.rb +151 -0
  40. data/lib/roo/excelx/sheet.rb +151 -0
  41. data/lib/roo/excelx/sheet_doc.rb +257 -0
  42. data/lib/roo/excelx/styles.rb +64 -0
  43. data/lib/roo/excelx/workbook.rb +64 -0
  44. data/lib/roo/excelx.rb +407 -601
  45. data/lib/roo/font.rb +17 -0
  46. data/lib/roo/formatters/base.rb +15 -0
  47. data/lib/roo/formatters/csv.rb +84 -0
  48. data/lib/roo/formatters/matrix.rb +23 -0
  49. data/lib/roo/formatters/xml.rb +31 -0
  50. data/lib/roo/formatters/yaml.rb +40 -0
  51. data/lib/roo/helpers/default_attr_reader.rb +20 -0
  52. data/lib/roo/helpers/weak_instance_cache.rb +41 -0
  53. data/lib/roo/libre_office.rb +4 -0
  54. data/lib/roo/link.rb +34 -0
  55. data/lib/roo/open_office.rb +631 -0
  56. data/lib/roo/spreadsheet.rb +28 -23
  57. data/lib/roo/tempdir.rb +24 -0
  58. data/lib/roo/utils.rb +128 -0
  59. data/lib/roo/version.rb +3 -0
  60. data/lib/roo.rb +26 -24
  61. data/roo.gemspec +29 -203
  62. data/spec/helpers.rb +5 -0
  63. data/spec/lib/roo/base_spec.rb +291 -3
  64. data/spec/lib/roo/csv_spec.rb +38 -11
  65. data/spec/lib/roo/excelx/cell/time_spec.rb +15 -0
  66. data/spec/lib/roo/excelx/format_spec.rb +7 -6
  67. data/spec/lib/roo/excelx/relationships_spec.rb +43 -0
  68. data/spec/lib/roo/excelx/sheet_doc_spec.rb +11 -0
  69. data/spec/lib/roo/excelx_spec.rb +672 -11
  70. data/spec/lib/roo/libreoffice_spec.rb +16 -6
  71. data/spec/lib/roo/openoffice_spec.rb +30 -8
  72. data/spec/lib/roo/spreadsheet_spec.rb +60 -12
  73. data/spec/lib/roo/strict_spec.rb +43 -0
  74. data/spec/lib/roo/utils_spec.rb +119 -0
  75. data/spec/lib/roo/weak_instance_cache_spec.rb +92 -0
  76. data/spec/lib/roo_spec.rb +0 -0
  77. data/spec/spec_helper.rb +7 -6
  78. data/test/all_ss.rb +12 -11
  79. data/test/excelx/cell/test_attr_reader_default.rb +72 -0
  80. data/test/excelx/cell/test_base.rb +68 -0
  81. data/test/excelx/cell/test_boolean.rb +36 -0
  82. data/test/excelx/cell/test_date.rb +38 -0
  83. data/test/excelx/cell/test_datetime.rb +45 -0
  84. data/test/excelx/cell/test_empty.rb +18 -0
  85. data/test/excelx/cell/test_number.rb +90 -0
  86. data/test/excelx/cell/test_string.rb +48 -0
  87. data/test/excelx/cell/test_time.rb +30 -0
  88. data/test/excelx/test_coordinate.rb +51 -0
  89. data/test/formatters/test_csv.rb +136 -0
  90. data/test/formatters/test_matrix.rb +76 -0
  91. data/test/formatters/test_xml.rb +78 -0
  92. data/test/formatters/test_yaml.rb +20 -0
  93. data/test/helpers/test_accessing_files.rb +81 -0
  94. data/test/helpers/test_comments.rb +43 -0
  95. data/test/helpers/test_formulas.rb +9 -0
  96. data/test/helpers/test_labels.rb +103 -0
  97. data/test/helpers/test_sheets.rb +55 -0
  98. data/test/helpers/test_styles.rb +62 -0
  99. data/test/roo/test_base.rb +182 -0
  100. data/test/roo/test_csv.rb +88 -0
  101. data/test/roo/test_excelx.rb +360 -0
  102. data/test/roo/test_libre_office.rb +9 -0
  103. data/test/roo/test_open_office.rb +289 -0
  104. data/test/test_helper.rb +123 -59
  105. data/test/test_roo.rb +392 -2292
  106. metadata +153 -298
  107. data/CHANGELOG +0 -417
  108. data/Gemfile.lock +0 -78
  109. data/README.markdown +0 -126
  110. data/VERSION +0 -1
  111. data/lib/roo/excel.rb +0 -355
  112. data/lib/roo/excel2003xml.rb +0 -300
  113. data/lib/roo/google.rb +0 -292
  114. data/lib/roo/openoffice.rb +0 -496
  115. data/lib/roo/roo_rails_helper.rb +0 -83
  116. data/lib/roo/worksheet.rb +0 -18
  117. data/scripts/txt2html +0 -67
  118. data/spec/lib/roo/excel2003xml_spec.rb +0 -15
  119. data/spec/lib/roo/excel_spec.rb +0 -17
  120. data/spec/lib/roo/google_spec.rb +0 -64
  121. data/test/files/1900_base.xls +0 -0
  122. data/test/files/1900_base.xlsx +0 -0
  123. data/test/files/1904_base.xls +0 -0
  124. data/test/files/1904_base.xlsx +0 -0
  125. data/test/files/Bibelbund.csv +0 -3741
  126. data/test/files/Bibelbund.ods +0 -0
  127. data/test/files/Bibelbund.xls +0 -0
  128. data/test/files/Bibelbund.xlsx +0 -0
  129. data/test/files/Bibelbund.xml +0 -62518
  130. data/test/files/Bibelbund1.ods +0 -0
  131. data/test/files/Pfand_from_windows_phone.xlsx +0 -0
  132. data/test/files/bad_excel_date.xls +0 -0
  133. data/test/files/bbu.ods +0 -0
  134. data/test/files/bbu.xls +0 -0
  135. data/test/files/bbu.xlsx +0 -0
  136. data/test/files/bbu.xml +0 -152
  137. data/test/files/bode-v1.ods.zip +0 -0
  138. data/test/files/bode-v1.xls.zip +0 -0
  139. data/test/files/boolean.csv +0 -2
  140. data/test/files/boolean.ods +0 -0
  141. data/test/files/boolean.xls +0 -0
  142. data/test/files/boolean.xlsx +0 -0
  143. data/test/files/boolean.xml +0 -112
  144. data/test/files/borders.ods +0 -0
  145. data/test/files/borders.xls +0 -0
  146. data/test/files/borders.xlsx +0 -0
  147. data/test/files/borders.xml +0 -144
  148. data/test/files/bug-numbered-sheet-names.xlsx +0 -0
  149. data/test/files/bug-row-column-fixnum-float.xls +0 -0
  150. data/test/files/bug-row-column-fixnum-float.xml +0 -127
  151. data/test/files/comments.ods +0 -0
  152. data/test/files/comments.xls +0 -0
  153. data/test/files/comments.xlsx +0 -0
  154. data/test/files/csvtypes.csv +0 -1
  155. data/test/files/datetime.ods +0 -0
  156. data/test/files/datetime.xls +0 -0
  157. data/test/files/datetime.xlsx +0 -0
  158. data/test/files/datetime.xml +0 -142
  159. data/test/files/datetime_floatconv.xls +0 -0
  160. data/test/files/datetime_floatconv.xml +0 -148
  161. data/test/files/dreimalvier.ods +0 -0
  162. data/test/files/emptysheets.ods +0 -0
  163. data/test/files/emptysheets.xls +0 -0
  164. data/test/files/emptysheets.xlsx +0 -0
  165. data/test/files/emptysheets.xml +0 -105
  166. data/test/files/excel2003.xml +0 -21140
  167. data/test/files/false_encoding.xls +0 -0
  168. data/test/files/false_encoding.xml +0 -132
  169. data/test/files/file_item_error.xlsx +0 -0
  170. data/test/files/formula.ods +0 -0
  171. data/test/files/formula.xls +0 -0
  172. data/test/files/formula.xlsx +0 -0
  173. data/test/files/formula.xml +0 -134
  174. data/test/files/formula_parse_error.xls +0 -0
  175. data/test/files/formula_parse_error.xml +0 -1833
  176. data/test/files/formula_string_error.xlsx +0 -0
  177. data/test/files/html-escape.ods +0 -0
  178. data/test/files/link.xls +0 -0
  179. data/test/files/link.xlsx +0 -0
  180. data/test/files/matrix.ods +0 -0
  181. data/test/files/matrix.xls +0 -0
  182. data/test/files/named_cells.ods +0 -0
  183. data/test/files/named_cells.xls +0 -0
  184. data/test/files/named_cells.xlsx +0 -0
  185. data/test/files/no_spreadsheet_file.txt +0 -1
  186. data/test/files/numbers1.csv +0 -18
  187. data/test/files/numbers1.ods +0 -0
  188. data/test/files/numbers1.xls +0 -0
  189. data/test/files/numbers1.xlsx +0 -0
  190. data/test/files/numbers1.xml +0 -312
  191. data/test/files/numeric-link.xlsx +0 -0
  192. data/test/files/only_one_sheet.ods +0 -0
  193. data/test/files/only_one_sheet.xls +0 -0
  194. data/test/files/only_one_sheet.xlsx +0 -0
  195. data/test/files/only_one_sheet.xml +0 -67
  196. data/test/files/paragraph.ods +0 -0
  197. data/test/files/paragraph.xls +0 -0
  198. data/test/files/paragraph.xlsx +0 -0
  199. data/test/files/paragraph.xml +0 -127
  200. data/test/files/prova.xls +0 -0
  201. data/test/files/ric.ods +0 -0
  202. data/test/files/simple_spreadsheet.ods +0 -0
  203. data/test/files/simple_spreadsheet.xls +0 -0
  204. data/test/files/simple_spreadsheet.xlsx +0 -0
  205. data/test/files/simple_spreadsheet.xml +0 -225
  206. data/test/files/simple_spreadsheet_from_italo.ods +0 -0
  207. data/test/files/simple_spreadsheet_from_italo.xls +0 -0
  208. data/test/files/simple_spreadsheet_from_italo.xml +0 -242
  209. data/test/files/so_datetime.csv +0 -7
  210. data/test/files/style.ods +0 -0
  211. data/test/files/style.xls +0 -0
  212. data/test/files/style.xlsx +0 -0
  213. data/test/files/style.xml +0 -154
  214. data/test/files/time-test.csv +0 -2
  215. data/test/files/time-test.ods +0 -0
  216. data/test/files/time-test.xls +0 -0
  217. data/test/files/time-test.xlsx +0 -0
  218. data/test/files/time-test.xml +0 -131
  219. data/test/files/type_excel.ods +0 -0
  220. data/test/files/type_excel.xlsx +0 -0
  221. data/test/files/type_excelx.ods +0 -0
  222. data/test/files/type_excelx.xls +0 -0
  223. data/test/files/type_openoffice.xls +0 -0
  224. data/test/files/type_openoffice.xlsx +0 -0
  225. data/test/files/whitespace.ods +0 -0
  226. data/test/files/whitespace.xls +0 -0
  227. data/test/files/whitespace.xlsx +0 -0
  228. data/test/files/whitespace.xml +0 -184
  229. data/test/rm_sub_test.rb +0 -12
  230. data/test/rm_test.rb +0 -7
  231. data/test/test_generic_spreadsheet.rb +0 -259
  232. data/website/index.html +0 -385
  233. data/website/index.txt +0 -423
  234. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  235. data/website/stylesheets/screen.css +0 -130
  236. data/website/template.rhtml +0 -48
@@ -1,131 +0,0 @@
1
- <?xml version="1.0"?>
2
- <?mso-application progid="Excel.Sheet"?>
3
- <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
4
- xmlns:o="urn:schemas-microsoft-com:office:office"
5
- xmlns:x="urn:schemas-microsoft-com:office:excel"
6
- xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
7
- xmlns:html="http://www.w3.org/TR/REC-html40">
8
- <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
9
- <LastAuthor>Licensed User</LastAuthor>
10
- <Created>2009-12-22T17:41:04Z</Created>
11
- <Version>12.00</Version>
12
- </DocumentProperties>
13
- <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
14
- <WindowHeight>8190</WindowHeight>
15
- <WindowWidth>16380</WindowWidth>
16
- <WindowTopX>0</WindowTopX>
17
- <WindowTopY>0</WindowTopY>
18
- <TabRatio>344</TabRatio>
19
- <ProtectStructure>False</ProtectStructure>
20
- <ProtectWindows>False</ProtectWindows>
21
- </ExcelWorkbook>
22
- <Styles>
23
- <Style ss:ID="Default" ss:Name="Normal">
24
- <Alignment ss:Vertical="Bottom"/>
25
- <Borders/>
26
- <Font ss:FontName="Arial" x:Family="Swiss"/>
27
- <Interior/>
28
- <NumberFormat/>
29
- <Protection/>
30
- </Style>
31
- <Style ss:ID="s21">
32
- <NumberFormat ss:Format="hh:mm:ss"/>
33
- </Style>
34
- <Style ss:ID="s22">
35
- <NumberFormat ss:Format="dd/mm/yy"/>
36
- </Style>
37
- <Style ss:ID="s23">
38
- <NumberFormat ss:Format="Fixed"/>
39
- </Style>
40
- </Styles>
41
- <Worksheet ss:Name="Tabelle1">
42
- <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="6" x:FullColumns="1"
43
- x:FullRows="1" ss:DefaultColumnWidth="60.75">
44
- <Row>
45
- <Cell><Data ss:Type="String">Mittags:</Data></Cell>
46
- <Cell ss:StyleID="s21"><Data ss:Type="DateTime">1899-12-31T12:13:14.000</Data></Cell>
47
- <Cell ss:StyleID="s21"><Data ss:Type="DateTime">1899-12-31T15:16:00.000</Data></Cell>
48
- <Cell ss:StyleID="s21"><Data ss:Type="DateTime">1899-12-31T23:00:00.000</Data></Cell>
49
- </Row>
50
- <Row>
51
- <Cell ss:StyleID="s22"><Data ss:Type="DateTime">2007-11-21T00:00:00.000</Data></Cell>
52
- </Row>
53
- <Row ss:Index="6">
54
- <Cell ss:Index="2" ss:StyleID="s23"/>
55
- </Row>
56
- </Table>
57
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
58
- <PageSetup>
59
- <Layout x:StartPageNumber="1"/>
60
- <Header x:Margin="0.78749999999999998"
61
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12&amp;A"/>
62
- <Footer x:Margin="0.78749999999999998"
63
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12Seite &amp;P"/>
64
- <PageMargins x:Bottom="1.0527777777777778" x:Left="0.78749999999999998"
65
- x:Right="0.78749999999999998" x:Top="1.0527777777777778"/>
66
- </PageSetup>
67
- <Print>
68
- <ValidPrinterInfo/>
69
- <PaperSizeIndex>9</PaperSizeIndex>
70
- <HorizontalResolution>300</HorizontalResolution>
71
- <VerticalResolution>300</VerticalResolution>
72
- </Print>
73
- <Selected/>
74
- <Panes>
75
- <Pane>
76
- <Number>3</Number>
77
- <ActiveRow>5</ActiveRow>
78
- <ActiveCol>1</ActiveCol>
79
- </Pane>
80
- </Panes>
81
- <ProtectObjects>False</ProtectObjects>
82
- <ProtectScenarios>False</ProtectScenarios>
83
- </WorksheetOptions>
84
- </Worksheet>
85
- <Worksheet ss:Name="Tabelle2">
86
- <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
87
- x:FullRows="1" ss:DefaultColumnWidth="60.75">
88
- </Table>
89
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
90
- <PageSetup>
91
- <Header x:Margin="0.78749999999999998"
92
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12&amp;A"/>
93
- <Footer x:Margin="0.78749999999999998"
94
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12Seite &amp;P"/>
95
- <PageMargins x:Bottom="1.0527777777777778" x:Left="0.78749999999999998"
96
- x:Right="0.78749999999999998" x:Top="1.0527777777777778"/>
97
- </PageSetup>
98
- <Print>
99
- <ValidPrinterInfo/>
100
- <PaperSizeIndex>9</PaperSizeIndex>
101
- <HorizontalResolution>300</HorizontalResolution>
102
- <VerticalResolution>300</VerticalResolution>
103
- </Print>
104
- <ProtectObjects>False</ProtectObjects>
105
- <ProtectScenarios>False</ProtectScenarios>
106
- </WorksheetOptions>
107
- </Worksheet>
108
- <Worksheet ss:Name="Tabelle3">
109
- <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
110
- x:FullRows="1" ss:DefaultColumnWidth="60.75">
111
- </Table>
112
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
113
- <PageSetup>
114
- <Header x:Margin="0.78749999999999998"
115
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12&amp;A"/>
116
- <Footer x:Margin="0.78749999999999998"
117
- x:Data="&amp;C&amp;&quot;Times New Roman,Standard&quot;&amp;12Seite &amp;P"/>
118
- <PageMargins x:Bottom="1.0527777777777778" x:Left="0.78749999999999998"
119
- x:Right="0.78749999999999998" x:Top="1.0527777777777778"/>
120
- </PageSetup>
121
- <Print>
122
- <ValidPrinterInfo/>
123
- <PaperSizeIndex>9</PaperSizeIndex>
124
- <HorizontalResolution>300</HorizontalResolution>
125
- <VerticalResolution>300</VerticalResolution>
126
- </Print>
127
- <ProtectObjects>False</ProtectObjects>
128
- <ProtectScenarios>False</ProtectScenarios>
129
- </WorksheetOptions>
130
- </Worksheet>
131
- </Workbook>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,184 +0,0 @@
1
- <?xml version="1.0"?>
2
- <?mso-application progid="Excel.Sheet"?>
3
- <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
4
- xmlns:o="urn:schemas-microsoft-com:office:office"
5
- xmlns:x="urn:schemas-microsoft-com:office:excel"
6
- xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
7
- xmlns:html="http://www.w3.org/TR/REC-html40">
8
- <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
9
- <LastAuthor>Licensed User</LastAuthor>
10
- <Created>2009-12-22T17:41:27Z</Created>
11
- <Version>12.00</Version>
12
- </DocumentProperties>
13
- <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
14
- <WindowHeight>8190</WindowHeight>
15
- <WindowWidth>16380</WindowWidth>
16
- <WindowTopX>0</WindowTopX>
17
- <WindowTopY>0</WindowTopY>
18
- <ProtectStructure>False</ProtectStructure>
19
- <ProtectWindows>False</ProtectWindows>
20
- </ExcelWorkbook>
21
- <Styles>
22
- <Style ss:ID="Default" ss:Name="Normal">
23
- <Alignment ss:Vertical="Bottom"/>
24
- <Borders/>
25
- <Font ss:FontName="Arial" x:Family="Swiss"/>
26
- <Interior/>
27
- <NumberFormat/>
28
- <Protection/>
29
- </Style>
30
- <Style ss:ID="s21">
31
- <Font ss:FontName="Arial" x:Family="Swiss" ss:Bold="1" ss:Underline="Single"/>
32
- <NumberFormat ss:Format="yyyy\-mm\-dd"/>
33
- </Style>
34
- <Style ss:ID="s22">
35
- <Font ss:FontName="Arial" x:Family="Swiss" ss:Bold="1" ss:Underline="Single"/>
36
- <NumberFormat ss:Format="Standard"/>
37
- </Style>
38
- <Style ss:ID="s23">
39
- <Font ss:FontName="Arial" x:Family="Swiss" ss:Bold="1" ss:Underline="Single"/>
40
- </Style>
41
- <Style ss:ID="s24">
42
- <NumberFormat ss:Format="yyyy\-mm\-dd"/>
43
- </Style>
44
- <Style ss:ID="s25">
45
- <NumberFormat ss:Format="Standard"/>
46
- </Style>
47
- </Styles>
48
- <Worksheet ss:Name="Sheet1">
49
- <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="6" x:FullColumns="1"
50
- x:FullRows="1">
51
- <Column ss:AutoFitWidth="0" ss:Width="53.25"/>
52
- <Row>
53
- <Cell ss:StyleID="s21"/>
54
- <Cell ss:StyleID="s22"/>
55
- <Cell ss:StyleID="s22"/>
56
- <Cell ss:StyleID="s23"/>
57
- <Cell ss:StyleID="s23"/>
58
- <Cell ss:StyleID="s23"/>
59
- </Row>
60
- <Row>
61
- <Cell ss:StyleID="s21"/>
62
- <Cell ss:StyleID="s22"/>
63
- <Cell ss:StyleID="s22"/>
64
- <Cell ss:StyleID="s23"/>
65
- <Cell ss:StyleID="s23"/>
66
- <Cell ss:StyleID="s23"/>
67
- </Row>
68
- <Row>
69
- <Cell ss:StyleID="s21"><Data ss:Type="String">Date</Data></Cell>
70
- <Cell ss:StyleID="s22"><Data ss:Type="String">Start time</Data></Cell>
71
- <Cell ss:StyleID="s22"><Data ss:Type="String">End time</Data></Cell>
72
- <Cell ss:StyleID="s23"><Data ss:Type="String">Pause</Data></Cell>
73
- <Cell ss:StyleID="s23"><Data ss:Type="String">Sum</Data></Cell>
74
- <Cell ss:StyleID="s23"><Data ss:Type="String">Comment</Data></Cell>
75
- </Row>
76
- <Row>
77
- <Cell ss:StyleID="s24"><Data ss:Type="DateTime">2007-05-07T00:00:00.000</Data></Cell>
78
- <Cell ss:StyleID="s25"><Data ss:Type="Number">9.25</Data></Cell>
79
- <Cell ss:StyleID="s25"><Data ss:Type="Number">10.25</Data></Cell>
80
- <Cell><Data ss:Type="Number">0</Data></Cell>
81
- <Cell ss:Formula="=RC[-2]-RC[-3]-RC[-1]"><Data ss:Type="Number">1</Data></Cell>
82
- <Cell><Data ss:Type="String">Task 1</Data></Cell>
83
- </Row>
84
- <Row>
85
- <Cell ss:StyleID="s24"/>
86
- <Cell ss:StyleID="s25"/>
87
- <Cell ss:StyleID="s25"/>
88
- </Row>
89
- <Row>
90
- <Cell ss:StyleID="s24"><Data ss:Type="DateTime">2007-05-07T00:00:00.000</Data></Cell>
91
- <Cell ss:StyleID="s25"><Data ss:Type="Number">10.75</Data></Cell>
92
- <Cell ss:StyleID="s25"><Data ss:Type="Number">10.75</Data></Cell>
93
- <Cell><Data ss:Type="Number">0</Data></Cell>
94
- <Cell ss:Formula="=RC[-2]-RC[-3]-RC[-1]"><Data ss:Type="Number">0</Data></Cell>
95
- <Cell><Data ss:Type="String">Task 1</Data></Cell>
96
- </Row>
97
- </Table>
98
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
99
- <PageSetup>
100
- <Header x:Margin="0.51180555555555551"/>
101
- <Footer x:Margin="0.51180555555555551"/>
102
- <PageMargins x:Bottom="0.98402777777777772" x:Left="0.74791666666666667"
103
- x:Right="0.74791666666666667" x:Top="0.98402777777777772"/>
104
- </PageSetup>
105
- <Print>
106
- <ValidPrinterInfo/>
107
- <HorizontalResolution>300</HorizontalResolution>
108
- <VerticalResolution>300</VerticalResolution>
109
- </Print>
110
- <Selected/>
111
- <Panes>
112
- <Pane>
113
- <Number>3</Number>
114
- <ActiveRow>6</ActiveRow>
115
- </Pane>
116
- </Panes>
117
- <ProtectObjects>False</ProtectObjects>
118
- <ProtectScenarios>False</ProtectScenarios>
119
- </WorksheetOptions>
120
- </Worksheet>
121
- <Worksheet ss:Name="Sheet2">
122
- <Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="3" x:FullColumns="1"
123
- x:FullRows="1">
124
- <Column ss:Index="3" ss:AutoFitWidth="0" ss:Width="53.25"/>
125
- <Row>
126
- <Cell ss:Index="3" ss:StyleID="s21"><Data ss:Type="String">Date</Data></Cell>
127
- <Cell ss:StyleID="s21"/>
128
- <Cell ss:StyleID="s22"><Data ss:Type="String">Start time</Data></Cell>
129
- </Row>
130
- <Row>
131
- <Cell ss:Index="3" ss:StyleID="s24"><Data ss:Type="DateTime">2007-05-07T00:00:00.000</Data></Cell>
132
- <Cell ss:StyleID="s24"/>
133
- <Cell ss:StyleID="s25"><Data ss:Type="Number">9.25</Data></Cell>
134
- </Row>
135
- <Row>
136
- <Cell ss:Index="3" ss:StyleID="s24"><Data ss:Type="DateTime">2007-05-07T00:00:00.000</Data></Cell>
137
- <Cell ss:StyleID="s24"/>
138
- <Cell ss:StyleID="s25"><Data ss:Type="Number">10.75</Data></Cell>
139
- </Row>
140
- </Table>
141
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
142
- <PageSetup>
143
- <Header x:Margin="0.51180555555555551"/>
144
- <Footer x:Margin="0.51180555555555551"/>
145
- <PageMargins x:Bottom="0.98402777777777772" x:Left="0.74791666666666667"
146
- x:Right="0.74791666666666667" x:Top="0.98402777777777772"/>
147
- </PageSetup>
148
- <Print>
149
- <ValidPrinterInfo/>
150
- <HorizontalResolution>300</HorizontalResolution>
151
- <VerticalResolution>300</VerticalResolution>
152
- </Print>
153
- <Panes>
154
- <Pane>
155
- <Number>3</Number>
156
- <ActiveRow>10</ActiveRow>
157
- <ActiveCol>2</ActiveCol>
158
- </Pane>
159
- </Panes>
160
- <ProtectObjects>False</ProtectObjects>
161
- <ProtectScenarios>False</ProtectScenarios>
162
- </WorksheetOptions>
163
- </Worksheet>
164
- <Worksheet ss:Name="Sheet3">
165
- <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
166
- x:FullRows="1">
167
- </Table>
168
- <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
169
- <PageSetup>
170
- <Header x:Margin="0.51180555555555551"/>
171
- <Footer x:Margin="0.51180555555555551"/>
172
- <PageMargins x:Bottom="0.98402777777777772" x:Left="0.74791666666666667"
173
- x:Right="0.74791666666666667" x:Top="0.98402777777777772"/>
174
- </PageSetup>
175
- <Print>
176
- <ValidPrinterInfo/>
177
- <HorizontalResolution>300</HorizontalResolution>
178
- <VerticalResolution>300</VerticalResolution>
179
- </Print>
180
- <ProtectObjects>False</ProtectObjects>
181
- <ProtectScenarios>False</ProtectScenarios>
182
- </WorksheetOptions>
183
- </Worksheet>
184
- </Workbook>
data/test/rm_sub_test.rb DELETED
@@ -1,12 +0,0 @@
1
- # Loeschen von Dateien, wenn mit Excel geoeffnet
2
- require 'roo'
3
-
4
- oo = Excel.new("tmp.xls")
5
- #oo = OpenOffice.new("tmp.ods")
6
- oo.default_sheet = oo.sheets.first
7
- oo.first_row.upto(oo.last_row) do |row|
8
- oo.first_column.upto(oo.last_column) do |col|
9
- p oo.cell(row,col)
10
- end
11
- end
12
-
data/test/rm_test.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'spreadsheet'
2
-
3
- book = Spreadsheet.open 'tmp.xls'
4
- sheet = book.worksheet 0
5
- sheet.each do |row| puts row[0] end
6
-
7
- FileUtils.rm("tmp.xls")
@@ -1,259 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.dirname(__FILE__) + '/test_helper'
3
-
4
- class TestBase < Test::Unit::TestCase
5
-
6
- def setup
7
- @klass = Class.new(Roo::Base) do
8
- def initialize(filename='some_file')
9
- super
10
- @filename = filename
11
- end
12
-
13
- def read_cells(sheet=nil)
14
- @cells_read[sheet] = true
15
- end
16
-
17
- def cell(row, col, sheet=nil)
18
- sheet ||= @default_sheet
19
- @cell[sheet][[row,col]]
20
- end
21
-
22
- def celltype(row, col, sheet=nil)
23
- sheet ||= @default_sheet
24
- @cell_type[sheet][[row,col]]
25
- end
26
-
27
- def sheets
28
- ['my_sheet','blank sheet']
29
- end
30
- end
31
- @oo = @klass.new
32
- setup_test_sheet(@oo)
33
- end
34
-
35
- context 'Roo::Base.letter_to_number(letter)' do
36
- should "give us 1 for 'A' and 'a'" do
37
- assert_equal 1, Roo::Base.letter_to_number('A')
38
- assert_equal 1, Roo::Base.letter_to_number('a')
39
- end
40
-
41
- should "give us the correct value for 'Z'" do
42
- assert_equal 26, Roo::Base.letter_to_number('Z')
43
- end
44
-
45
- should "give us the correct value for 'AA' regardless of case mixing" do
46
- assert_equal 27, Roo::Base.letter_to_number('AA')
47
- assert_equal 27, Roo::Base.letter_to_number('aA')
48
- assert_equal 27, Roo::Base.letter_to_number('Aa')
49
- assert_equal 27, Roo::Base.letter_to_number('aa')
50
- end
51
-
52
- should "give us the correct value for 'AB'" do
53
- assert_equal 28, Roo::Base.letter_to_number('AB')
54
- end
55
-
56
- should "give us the correct value for 'AZ'" do
57
- assert_equal 26*2, Roo::Base.letter_to_number('AZ')
58
- end
59
-
60
- should "give us the correct value for 'BZ'" do
61
- assert_equal 26*3, Roo::Base.letter_to_number('BZ')
62
- end
63
-
64
- should "give us the correct value for 'ZZ'" do
65
- assert_equal 26**2 + 26,Roo::Base.letter_to_number('ZZ')
66
- end
67
- end
68
-
69
- context "Roo::Base.number_to_letter" do
70
- Roo::Base::LETTERS.each_with_index do |l,i|
71
- should "return '#{l}' when passed #{i+1}" do
72
- assert_equal l,Roo::Base.number_to_letter(i+1)
73
- end
74
- end
75
-
76
- should "return 'AA' when passed 27" do
77
- assert_equal 'AA',Roo::Base.number_to_letter(27)
78
- end
79
-
80
- should "return 'AZ' when passed #{26*2}" do
81
- assert_equal 'AZ', Roo::Base.number_to_letter(26*2)
82
- end
83
-
84
- should "return 'BZ' when passed #{26*3}" do
85
- assert_equal 'BZ', Roo::Base.number_to_letter(26*3)
86
- end
87
-
88
- should "return 'ZZ' when passed #{26**2 + 26}" do
89
- assert_equal 'ZZ',Roo::Base.number_to_letter(26**2 + 26)
90
- end
91
-
92
- should "return 'AAA' when passed #{26**2 + 27}" do
93
- assert_equal 'AAA',Roo::Base.number_to_letter(26**2 + 27)
94
- end
95
-
96
- should "return 'ZZZ' when passed #{26**3 + 26**2 + 26}" do
97
- assert_equal 'ZZZ',Roo::Base.number_to_letter(26**3 + 26**2 + 26)
98
- end
99
-
100
- should "return the correct letter when passed a Float" do
101
- assert_equal 'A',Roo::Base.number_to_letter(1.0)
102
- end
103
- end
104
-
105
- def test_setting_invalid_type_does_not_update_cell
106
- @oo.set(1,1,1)
107
- assert_raise(ArgumentError){@oo.set(1,1, :invalid_type)}
108
- assert_equal 1, @oo.cell(1,1)
109
- assert_equal :float, @oo.celltype(1,1)
110
- end
111
-
112
- def test_first_row
113
- assert_equal 5,@oo.first_row
114
- end
115
-
116
- def test_last_row
117
- assert_equal 16,@oo.last_row
118
- end
119
-
120
- def test_first_column
121
- assert_equal 1,@oo.first_column
122
- end
123
-
124
- def test_first_column_as_letter
125
- assert_equal 'A', @oo.first_column_as_letter
126
- end
127
-
128
- def test_last_column
129
- assert_equal 7, @oo.last_column
130
- end
131
-
132
- def test_last_column_as_letter
133
- assert_equal 'G', @oo.last_column_as_letter
134
- end
135
-
136
- #TODO: inkonsequente Lieferung Fixnum/Float
137
- def test_rows
138
- assert_equal [41.0,42.0,43.0,44.0,45.0, nil, nil], @oo.row(12)
139
- assert_equal [nil, nil, "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", nil, nil], @oo.row(16)
140
- end
141
-
142
- def test_empty_eh
143
- assert @oo.empty?(1,1)
144
- assert !@oo.empty?(8,3)
145
- assert @oo.empty?("A",11)
146
- assert !@oo.empty?("A",12)
147
- end
148
-
149
- def test_reload
150
- @oo.reload
151
- assert @oo.instance_variable_get(:@cell).empty?
152
- end
153
-
154
- def test_to_yaml
155
- assert_equal "--- \n"+yaml_entry(5,1,"date","1961-11-21"), @oo.to_yaml({}, 5,1,5,1)
156
- assert_equal "--- \n"+yaml_entry(8,3,"string","thisisc8"), @oo.to_yaml({}, 8,3,8,3)
157
- assert_equal "--- \n"+yaml_entry(12,3,"float",43.0), @oo.to_yaml({}, 12,3,12,3)
158
- assert_equal \
159
- "--- \n"+yaml_entry(12,3,"float",43.0) +
160
- yaml_entry(12,4,"float",44.0) +
161
- yaml_entry(12,5,"float",45.0), @oo.to_yaml({}, 12,3,12)
162
- assert_equal \
163
- "--- \n"+yaml_entry(12,3,"float",43.0)+
164
- yaml_entry(12,4,"float",44.0)+
165
- yaml_entry(12,5,"float",45.0)+
166
- yaml_entry(15,3,"float",43.0)+
167
- yaml_entry(15,4,"float",44.0)+
168
- yaml_entry(15,5,"float",45.0)+
169
- yaml_entry(16,3,"string","dreiundvierzig")+
170
- yaml_entry(16,4,"string","vierundvierzig")+
171
- yaml_entry(16,5,"string","fuenfundvierzig"), @oo.to_yaml({}, 12,3)
172
- end
173
-
174
- def test_to_csv
175
- assert_equal expected_csv,@oo.to_csv
176
- end
177
- protected
178
- def setup_test_sheet(workbook=nil)
179
- workbook ||= @oo
180
- set_sheet_values(workbook)
181
- set_sheet_types(workbook)
182
- set_cells_read(workbook)
183
- end
184
-
185
- def set_sheet_values(workbook)
186
- workbook.instance_variable_get(:@cell)[workbook.default_sheet] = {
187
- [5,1] => Date.civil(1961,11,21).to_s,
188
-
189
- [8,3] => "thisisc8",
190
- [8,7] => "thisisg8",
191
-
192
- [12,1] => 41.0,
193
- [12,2] => 42.0,
194
- [12,3] => 43.0,
195
- [12,4] => 44.0,
196
- [12,5] => 45.0,
197
-
198
- [15,3] => 43.0,
199
- [15,4] => 44.0,
200
- [15,5] => 45.0,
201
-
202
- [16,3] => "dreiundvierzig",
203
- [16,4] => "vierundvierzig",
204
- [16,5] => "fuenfundvierzig"
205
- }
206
- end
207
-
208
- def set_sheet_types(workbook)
209
- workbook.instance_variable_get(:@cell_type)[workbook.default_sheet] = {
210
- [5,1] => :date,
211
-
212
- [8,3] => :string,
213
- [8,7] => :string,
214
-
215
- [12,1] => :float,
216
- [12,2] => :float,
217
- [12,3] => :float,
218
- [12,4] => :float,
219
- [12,5] => :float,
220
-
221
- [15,3] => :float,
222
- [15,4] => :float,
223
- [15,5] => :float,
224
-
225
- [16,3] => :string,
226
- [16,4] => :string,
227
- [16,5] => :string,
228
- }
229
- end
230
-
231
- def set_first_row(workbook)
232
- row_hash = workbook.instance_variable_get(:@first_row)
233
- row_hash[workbook.default_sheet] = workbook.instance_variable_get(:@cell)[workbook.default_sheet].map{|k,v| k[0]}.min
234
- end
235
-
236
- def set_last_row(workbook)
237
- row_hash = workbook.instance_variable_get(:@last_row)
238
- row_hash[workbook.default_sheet] = workbook.instance_variable_get(:@cell)[workbook.default_sheet].map{|k,v| k[0]}.max
239
- end
240
-
241
- def set_first_col(workbook)
242
- col_hash = workbook.instance_variable_get(:@first_column)
243
- col_hash[workbook.default_sheet] = workbook.instance_variable_get(:@cell)[workbook.default_sheet].map{|k,v| k[1]}.min
244
- end
245
-
246
- def set_last_col(workbook)
247
- col_hash = workbook.instance_variable_get(:@last_column)
248
- col_hash[workbook.default_sheet] = workbook.instance_variable_get(:@cell)[workbook.default_sheet].map{|k,v| k[1]}.max
249
- end
250
-
251
- def set_cells_read(workbook)
252
- read_hash = workbook.instance_variable_get(:@cells_read)
253
- read_hash[workbook.default_sheet] = true
254
- end
255
-
256
- def expected_csv
257
- ",,,,,,\n,,,,,,\n,,,,,,\n,,,,,,\n1961-11-21,,,,,,\n,,,,,,\n,,,,,,\n,,\"thisisc8\",,,,\"thisisg8\"\n,,,,,,\n,,,,,,\n,,,,,,\n41,42,43,44,45,,\n,,,,,,\n,,,,,,\n,,43,44,45,,\n,,\"dreiundvierzig\",\"vierundvierzig\",\"fuenfundvierzig\",,\n"
258
- end
259
- end