write_xlsx 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (261) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/Gemfile +12 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +82 -0
  6. data/Rakefile +78 -0
  7. data/VERSION +1 -0
  8. data/examples/a_simple.rb +45 -0
  9. data/examples/array_formula.rb +33 -0
  10. data/examples/autofilter.rb +235 -0
  11. data/examples/chart_area.rb +59 -0
  12. data/examples/chart_bar.rb +59 -0
  13. data/examples/chart_column.rb +58 -0
  14. data/examples/chart_line.rb +59 -0
  15. data/examples/chart_pie.rb +49 -0
  16. data/examples/chart_scatter.rb +59 -0
  17. data/examples/chart_stock.rb +65 -0
  18. data/examples/colors.rb +130 -0
  19. data/examples/comments1.rb +12 -0
  20. data/examples/comments2.rb +335 -0
  21. data/examples/conditional_format.rb +67 -0
  22. data/examples/data_validate.rb +279 -0
  23. data/examples/defined_name.rb +28 -0
  24. data/examples/demo.rb +104 -0
  25. data/examples/diag_border.rb +26 -0
  26. data/examples/headers.rb +119 -0
  27. data/examples/hide_sheet.rb +30 -0
  28. data/examples/hyperlink1.rb +58 -0
  29. data/examples/indent.rb +28 -0
  30. data/examples/merge1.rb +38 -0
  31. data/examples/merge2.rb +48 -0
  32. data/examples/merge3.rb +43 -0
  33. data/examples/merge4.rb +82 -0
  34. data/examples/merge5.rb +70 -0
  35. data/examples/merge6.rb +48 -0
  36. data/examples/outline.rb +252 -0
  37. data/examples/properties.rb +33 -0
  38. data/examples/protection.rb +34 -0
  39. data/examples/rich_strings.rb +42 -0
  40. data/examples/right_to_left.rb +24 -0
  41. data/examples/tab_colors.rb +26 -0
  42. data/lib/write_xlsx.rb +77 -0
  43. data/lib/write_xlsx/chart.rb +3027 -0
  44. data/lib/write_xlsx/chart/area.rb +52 -0
  45. data/lib/write_xlsx/chart/bar.rb +126 -0
  46. data/lib/write_xlsx/chart/column.rb +132 -0
  47. data/lib/write_xlsx/chart/line.rb +51 -0
  48. data/lib/write_xlsx/chart/pie.rb +210 -0
  49. data/lib/write_xlsx/chart/scatter.rb +252 -0
  50. data/lib/write_xlsx/chart/stock.rb +134 -0
  51. data/lib/write_xlsx/chartsheet.rb +173 -0
  52. data/lib/write_xlsx/colors.rb +65 -0
  53. data/lib/write_xlsx/compatibility.rb +71 -0
  54. data/lib/write_xlsx/drawing.rb +547 -0
  55. data/lib/write_xlsx/format.rb +683 -0
  56. data/lib/write_xlsx/package/app.rb +218 -0
  57. data/lib/write_xlsx/package/comments.rb +221 -0
  58. data/lib/write_xlsx/package/content_types.rb +189 -0
  59. data/lib/write_xlsx/package/core.rb +196 -0
  60. data/lib/write_xlsx/package/packager.rb +510 -0
  61. data/lib/write_xlsx/package/relationships.rb +98 -0
  62. data/lib/write_xlsx/package/shared_strings.rb +96 -0
  63. data/lib/write_xlsx/package/styles.rb +705 -0
  64. data/lib/write_xlsx/package/theme.rb +45 -0
  65. data/lib/write_xlsx/package/vml.rb +386 -0
  66. data/lib/write_xlsx/package/xml_writer_simple.rb +90 -0
  67. data/lib/write_xlsx/utility.rb +113 -0
  68. data/lib/write_xlsx/workbook.rb +1488 -0
  69. data/lib/write_xlsx/worksheet.rb +6578 -0
  70. data/lib/write_xlsx/zip_file_utils.rb +98 -0
  71. data/test/chart/test_add_series.rb +113 -0
  72. data/test/chart/test_process_names.rb +27 -0
  73. data/test/chart/test_write_auto.rb +15 -0
  74. data/test/chart/test_write_ax_id.rb +15 -0
  75. data/test/chart/test_write_ax_pos.rb +15 -0
  76. data/test/chart/test_write_chart_space.rb +15 -0
  77. data/test/chart/test_write_cross_ax.rb +15 -0
  78. data/test/chart/test_write_crosses.rb +15 -0
  79. data/test/chart/test_write_format_code.rb +15 -0
  80. data/test/chart/test_write_idx.rb +15 -0
  81. data/test/chart/test_write_label_align.rb +15 -0
  82. data/test/chart/test_write_label_offset.rb +15 -0
  83. data/test/chart/test_write_lang.rb +15 -0
  84. data/test/chart/test_write_layout.rb +15 -0
  85. data/test/chart/test_write_legend.rb +16 -0
  86. data/test/chart/test_write_legend_pos.rb +15 -0
  87. data/test/chart/test_write_major_gridlines.rb +15 -0
  88. data/test/chart/test_write_marker.rb +17 -0
  89. data/test/chart/test_write_marker_size.rb +15 -0
  90. data/test/chart/test_write_marker_value.rb +16 -0
  91. data/test/chart/test_write_num_cache.rb +16 -0
  92. data/test/chart/test_write_num_fmt.rb +16 -0
  93. data/test/chart/test_write_number_format.rb +15 -0
  94. data/test/chart/test_write_order.rb +15 -0
  95. data/test/chart/test_write_orientation.rb +15 -0
  96. data/test/chart/test_write_page_margins.rb +15 -0
  97. data/test/chart/test_write_page_setup.rb +15 -0
  98. data/test/chart/test_write_plot_vis_only.rb +15 -0
  99. data/test/chart/test_write_pt.rb +16 -0
  100. data/test/chart/test_write_pt_count.rb +16 -0
  101. data/test/chart/test_write_series_formula.rb +16 -0
  102. data/test/chart/test_write_style.rb +41 -0
  103. data/test/chart/test_write_symbol.rb +16 -0
  104. data/test/chart/test_write_tick_lbl_pos.rb +16 -0
  105. data/test/chart/test_write_v.rb +16 -0
  106. data/test/drawing/test_drawing_chart_01.rb +50 -0
  107. data/test/drawing/test_drawing_image_01.rb +59 -0
  108. data/test/helper.rb +90 -0
  109. data/test/package/app/test_app01.rb +44 -0
  110. data/test/package/app/test_app02.rb +46 -0
  111. data/test/package/app/test_app03.rb +53 -0
  112. data/test/package/comments/test_comments01.rb +36 -0
  113. data/test/package/comments/test_write_text_t.rb +44 -0
  114. data/test/package/content_types/test_content_types.rb +35 -0
  115. data/test/package/content_types/test_write_default.rb +13 -0
  116. data/test/package/content_types/test_write_override.rb +13 -0
  117. data/test/package/core/test_core01.rb +28 -0
  118. data/test/package/core/test_core02.rb +42 -0
  119. data/test/package/relationships/test_relationships.rb +28 -0
  120. data/test/package/relationships/test_sheet_rels.rb +22 -0
  121. data/test/package/shared_strings/test_shared_strings01.rb +30 -0
  122. data/test/package/shared_strings/test_shared_strings02.rb +30 -0
  123. data/test/package/shared_strings/test_write_si.rb +13 -0
  124. data/test/package/shared_strings/test_write_sst.rb +15 -0
  125. data/test/package/styles/test_styles_01.rb +69 -0
  126. data/test/package/styles/test_styles_02.rb +104 -0
  127. data/test/package/styles/test_styles_03.rb +90 -0
  128. data/test/package/styles/test_styles_04.rb +216 -0
  129. data/test/package/styles/test_styles_05.rb +150 -0
  130. data/test/package/styles/test_styles_06.rb +104 -0
  131. data/test/package/styles/test_styles_07.rb +104 -0
  132. data/test/package/styles/test_styles_08.rb +109 -0
  133. data/test/package/styles/test_styles_09.rb +95 -0
  134. data/test/package/vml/test_vml_01.rb +42 -0
  135. data/test/package/vml/test_write_anchor.rb +14 -0
  136. data/test/package/vml/test_write_auto_fill.rb +14 -0
  137. data/test/package/vml/test_write_column.rb +14 -0
  138. data/test/package/vml/test_write_div.rb +14 -0
  139. data/test/package/vml/test_write_fill.rb +14 -0
  140. data/test/package/vml/test_write_idmap.rb +14 -0
  141. data/test/package/vml/test_write_move_with_cells.rb +14 -0
  142. data/test/package/vml/test_write_path.rb +22 -0
  143. data/test/package/vml/test_write_row.rb +14 -0
  144. data/test/package/vml/test_write_shadow.rb +14 -0
  145. data/test/package/vml/test_write_shapelayout.rb +14 -0
  146. data/test/package/vml/test_write_shapetype.rb +14 -0
  147. data/test/package/vml/test_write_size_with_cells.rb +14 -0
  148. data/test/package/vml/test_write_stroke.rb +14 -0
  149. data/test/package/vml/test_write_textbox.rb +14 -0
  150. data/test/perl_output/a_simple.xlsx +0 -0
  151. data/test/perl_output/array_formula.xlsx +0 -0
  152. data/test/perl_output/autofilter.xlsx +0 -0
  153. data/test/perl_output/chart_area.xlsx +0 -0
  154. data/test/perl_output/chart_bar.xlsx +0 -0
  155. data/test/perl_output/chart_column.xlsx +0 -0
  156. data/test/perl_output/chart_line.xlsx +0 -0
  157. data/test/perl_output/chart_pie.xlsx +0 -0
  158. data/test/perl_output/chart_scatter.xlsx +0 -0
  159. data/test/perl_output/chart_stock.xlsx +0 -0
  160. data/test/perl_output/comments1.xlsx +0 -0
  161. data/test/perl_output/comments2.xlsx +0 -0
  162. data/test/perl_output/conditional_format.xlsx +0 -0
  163. data/test/perl_output/data_validate.xlsx +0 -0
  164. data/test/perl_output/defined_name.xlsx +0 -0
  165. data/test/perl_output/demo.xlsx +0 -0
  166. data/test/perl_output/diag_border.xlsx +0 -0
  167. data/test/perl_output/fit_to_pages.xlsx +0 -0
  168. data/test/perl_output/headers.xlsx +0 -0
  169. data/test/perl_output/hide_sheet.xlsx +0 -0
  170. data/test/perl_output/hyperlink.xlsx +0 -0
  171. data/test/perl_output/indent.xlsx +0 -0
  172. data/test/perl_output/merge1.xlsx +0 -0
  173. data/test/perl_output/merge2.xlsx +0 -0
  174. data/test/perl_output/merge3.xlsx +0 -0
  175. data/test/perl_output/merge4.xlsx +0 -0
  176. data/test/perl_output/merge5.xlsx +0 -0
  177. data/test/perl_output/merge6.xlsx +0 -0
  178. data/test/perl_output/outline.xlsx +0 -0
  179. data/test/perl_output/print_scale.xlsx +0 -0
  180. data/test/perl_output/properties.xlsx +0 -0
  181. data/test/perl_output/protection.xlsx +0 -0
  182. data/test/perl_output/rich_strings.xlsx +0 -0
  183. data/test/perl_output/right_to_left.xlsx +0 -0
  184. data/test/perl_output/tab_colors.xlsx +0 -0
  185. data/test/test_delete_files.rb +37 -0
  186. data/test/test_example_match.rb +2281 -0
  187. data/test/test_xml_writer_simple.rb +63 -0
  188. data/test/workbook/test_get_chart_range.rb +59 -0
  189. data/test/workbook/test_sort_defined_names.rb +77 -0
  190. data/test/workbook/test_workbook_01.rb +29 -0
  191. data/test/workbook/test_workbook_02.rb +31 -0
  192. data/test/workbook/test_workbook_03.rb +31 -0
  193. data/test/workbook/test_workbook_new.rb +18 -0
  194. data/test/workbook/test_write_defined_name.rb +17 -0
  195. data/test/workbook/test_write_defined_names.rb +41 -0
  196. data/test/worksheet/test_calculate_spans.rb +58 -0
  197. data/test/worksheet/test_convert_date_time_01.rb +439 -0
  198. data/test/worksheet/test_convert_date_time_02.rb +478 -0
  199. data/test/worksheet/test_convert_date_time_03.rb +435 -0
  200. data/test/worksheet/test_extract_filter_tokens.rb +109 -0
  201. data/test/worksheet/test_parse_filter_expression.rb +143 -0
  202. data/test/worksheet/test_position_object.rb +50 -0
  203. data/test/worksheet/test_repeat_formula.rb +55 -0
  204. data/test/worksheet/test_worksheet_01.rb +32 -0
  205. data/test/worksheet/test_worksheet_02.rb +38 -0
  206. data/test/worksheet/test_worksheet_03.rb +44 -0
  207. data/test/worksheet/test_worksheet_04.rb +45 -0
  208. data/test/worksheet/test_write_array_formula_01.rb +99 -0
  209. data/test/worksheet/test_write_autofilter.rb +260 -0
  210. data/test/worksheet/test_write_brk.rb +18 -0
  211. data/test/worksheet/test_write_cell.rb +49 -0
  212. data/test/worksheet/test_write_cell_value.rb +33 -0
  213. data/test/worksheet/test_write_col_breaks.rb +27 -0
  214. data/test/worksheet/test_write_col_info.rb +95 -0
  215. data/test/worksheet/test_write_conditional_formatting.rb +72 -0
  216. data/test/worksheet/test_write_custom_filter.rb +18 -0
  217. data/test/worksheet/test_write_custom_filters.rb +25 -0
  218. data/test/worksheet/test_write_data_validation_01.rb +113 -0
  219. data/test/worksheet/test_write_data_validation_02.rb +528 -0
  220. data/test/worksheet/test_write_dimension.rb +94 -0
  221. data/test/worksheet/test_write_ext.rb +18 -0
  222. data/test/worksheet/test_write_ext_lst.rb +18 -0
  223. data/test/worksheet/test_write_filter.rb +18 -0
  224. data/test/worksheet/test_write_filter_column.rb +18 -0
  225. data/test/worksheet/test_write_filters.rb +32 -0
  226. data/test/worksheet/test_write_header_footer.rb +53 -0
  227. data/test/worksheet/test_write_hyperlink.rb +39 -0
  228. data/test/worksheet/test_write_hyperlinks.rb +27 -0
  229. data/test/worksheet/test_write_legacy_drawing.rb +19 -0
  230. data/test/worksheet/test_write_merge_cell.rb +18 -0
  231. data/test/worksheet/test_write_merge_cells.rb +192 -0
  232. data/test/worksheet/test_write_methods.rb +353 -0
  233. data/test/worksheet/test_write_mx_plv.rb +19 -0
  234. data/test/worksheet/test_write_page_margins.rb +98 -0
  235. data/test/worksheet/test_write_page_set_up_pr.rb +19 -0
  236. data/test/worksheet/test_write_page_setup.rb +54 -0
  237. data/test/worksheet/test_write_pane.rb +123 -0
  238. data/test/worksheet/test_write_phonetic_pr.rb +19 -0
  239. data/test/worksheet/test_write_print_options.rb +77 -0
  240. data/test/worksheet/test_write_row_breaks.rb +27 -0
  241. data/test/worksheet/test_write_row_element.rb +69 -0
  242. data/test/worksheet/test_write_selection.rb +18 -0
  243. data/test/worksheet/test_write_sheet_calc_pr.rb +18 -0
  244. data/test/worksheet/test_write_sheet_data.rb +18 -0
  245. data/test/worksheet/test_write_sheet_format_pr.rb +18 -0
  246. data/test/worksheet/test_write_sheet_pr.rb +36 -0
  247. data/test/worksheet/test_write_sheet_protection.rb +174 -0
  248. data/test/worksheet/test_write_sheet_view.rb +62 -0
  249. data/test/worksheet/test_write_sheet_view1.rb +64 -0
  250. data/test/worksheet/test_write_sheet_view2.rb +56 -0
  251. data/test/worksheet/test_write_sheet_view3.rb +83 -0
  252. data/test/worksheet/test_write_sheet_view4.rb +83 -0
  253. data/test/worksheet/test_write_sheet_view5.rb +74 -0
  254. data/test/worksheet/test_write_sheet_view6.rb +51 -0
  255. data/test/worksheet/test_write_sheet_view7.rb +71 -0
  256. data/test/worksheet/test_write_sheet_view8.rb +51 -0
  257. data/test/worksheet/test_write_sheet_view9.rb +51 -0
  258. data/test/worksheet/test_write_tab_color.rb +23 -0
  259. data/test/worksheet/test_write_worksheet.rb +19 -0
  260. data/write_xlsx.gemspec +308 -0
  261. metadata +363 -0
@@ -0,0 +1,478 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestConvertDateTime01 < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_convert_date_time
13
+ data_for_test.split(/\n/).each do |line|
14
+ @workbook.date_1904 = false if line =~ /Excel 1900/
15
+ @workbook.date_1904 = true if line =~ /Excel 1904/
16
+
17
+ next unless line =~ /\S/
18
+ next if line =~ /^#/
19
+
20
+ count, date, expected = line.split
21
+ expected = expected.to_i
22
+
23
+ result = @worksheet.convert_date_time(date)
24
+ result = -1 if result.nil?
25
+
26
+ assert_equal(expected, result, line)
27
+ end
28
+ end
29
+
30
+ def data_for_test
31
+ <<EOS
32
+ #
33
+ # The following data was generated by Excel.
34
+ #
35
+
36
+ #
37
+ # Excel 1900 date system
38
+ #
39
+ 1 1899-12-31T 0
40
+ 2 1900-01-00T 0
41
+ 3 1900-01-01T 1
42
+ 4 1900-02-27T 58
43
+ 5 1900-02-28T 59
44
+ 6 1900-02-29T 60
45
+ 7 1900-03-01T 61
46
+ 8 1900-03-02T 62
47
+ 9 1900-03-11T 71
48
+ 10 1900-04-08T 99
49
+ 11 1900-09-12T 256
50
+ 12 1901-05-03T 489
51
+ 13 1901-10-13T 652
52
+ 14 1902-02-15T 777
53
+ 15 1902-06-06T 888
54
+ 16 1902-09-25T 999
55
+ 17 1902-09-27T 1001
56
+ 18 1903-04-26T 1212
57
+ 19 1903-08-05T 1313
58
+ 20 1903-12-31T 1461
59
+ 21 1904-01-01T 1462
60
+ 22 1904-02-28T 1520
61
+ 23 1904-02-29T 1521
62
+ 24 1904-03-01T 1522
63
+ 25 1907-02-27T 2615
64
+ 26 1907-02-28T 2616
65
+ 27 1907-03-01T 2617
66
+ 28 1907-03-02T 2618
67
+ 29 1907-03-03T 2619
68
+ 30 1907-03-04T 2620
69
+ 31 1907-03-05T 2621
70
+ 32 1907-03-06T 2622
71
+ 33 1999-01-01T 36161
72
+ 34 1999-01-31T 36191
73
+ 35 1999-02-01T 36192
74
+ 36 1999-02-28T 36219
75
+ 37 1999-03-01T 36220
76
+ 38 1999-03-31T 36250
77
+ 39 1999-04-01T 36251
78
+ 40 1999-04-30T 36280
79
+ 41 1999-05-01T 36281
80
+ 42 1999-05-31T 36311
81
+ 43 1999-06-01T 36312
82
+ 44 1999-06-30T 36341
83
+ 45 1999-07-01T 36342
84
+ 46 1999-07-31T 36372
85
+ 47 1999-08-01T 36373
86
+ 48 1999-08-31T 36403
87
+ 49 1999-09-01T 36404
88
+ 50 1999-09-30T 36433
89
+ 51 1999-10-01T 36434
90
+ 52 1999-10-31T 36464
91
+ 53 1999-11-01T 36465
92
+ 54 1999-11-30T 36494
93
+ 55 1999-12-01T 36495
94
+ 56 1999-12-31T 36525
95
+ 57 2000-01-01T 36526
96
+ 58 2000-01-31T 36556
97
+ 59 2000-02-01T 36557
98
+ 60 2000-02-29T 36585
99
+ 61 2000-03-01T 36586
100
+ 62 2000-03-31T 36616
101
+ 63 2000-04-01T 36617
102
+ 64 2000-04-30T 36646
103
+ 65 2000-05-01T 36647
104
+ 66 2000-05-31T 36677
105
+ 67 2000-06-01T 36678
106
+ 68 2000-06-30T 36707
107
+ 69 2000-07-01T 36708
108
+ 70 2000-07-31T 36738
109
+ 71 2000-08-01T 36739
110
+ 72 2000-08-31T 36769
111
+ 73 2000-09-01T 36770
112
+ 74 2000-09-30T 36799
113
+ 75 2000-10-01T 36800
114
+ 76 2000-10-31T 36830
115
+ 77 2000-11-01T 36831
116
+ 78 2000-11-30T 36860
117
+ 79 2000-12-01T 36861
118
+ 80 2000-12-31T 36891
119
+ 81 2001-01-01T 36892
120
+ 82 2001-01-31T 36922
121
+ 83 2001-02-01T 36923
122
+ 84 2001-02-28T 36950
123
+ 85 2001-03-01T 36951
124
+ 86 2001-03-31T 36981
125
+ 87 2001-04-01T 36982
126
+ 88 2001-04-30T 37011
127
+ 89 2001-05-01T 37012
128
+ 90 2001-05-31T 37042
129
+ 91 2001-06-01T 37043
130
+ 92 2001-06-30T 37072
131
+ 93 2001-07-01T 37073
132
+ 94 2001-07-31T 37103
133
+ 95 2001-08-01T 37104
134
+ 96 2001-08-31T 37134
135
+ 97 2001-09-01T 37135
136
+ 98 2001-09-30T 37164
137
+ 99 2001-10-01T 37165
138
+ 100 2001-10-31T 37195
139
+ 101 2001-11-01T 37196
140
+ 102 2001-11-30T 37225
141
+ 103 2001-12-01T 37226
142
+ 104 2001-12-31T 37256
143
+ 105 2400-01-01T 182623
144
+ 106 2400-01-31T 182653
145
+ 107 2400-02-01T 182654
146
+ 108 2400-02-29T 182682
147
+ 109 2400-03-01T 182683
148
+ 110 2400-03-31T 182713
149
+ 111 2400-04-01T 182714
150
+ 112 2400-04-30T 182743
151
+ 113 2400-05-01T 182744
152
+ 114 2400-05-31T 182774
153
+ 115 2400-06-01T 182775
154
+ 116 2400-06-30T 182804
155
+ 117 2400-07-01T 182805
156
+ 118 2400-07-31T 182835
157
+ 119 2400-08-01T 182836
158
+ 120 2400-08-31T 182866
159
+ 121 2400-09-01T 182867
160
+ 122 2400-09-30T 182896
161
+ 123 2400-10-01T 182897
162
+ 124 2400-10-31T 182927
163
+ 125 2400-11-01T 182928
164
+ 126 2400-11-30T 182957
165
+ 127 2400-12-01T 182958
166
+ 128 2400-12-31T 182988
167
+ 129 4000-01-01T 767011
168
+ 130 4000-01-31T 767041
169
+ 131 4000-02-01T 767042
170
+ 132 4000-02-29T 767070
171
+ 133 4000-03-01T 767071
172
+ 134 4000-03-31T 767101
173
+ 135 4000-04-01T 767102
174
+ 136 4000-04-30T 767131
175
+ 137 4000-05-01T 767132
176
+ 138 4000-05-31T 767162
177
+ 139 4000-06-01T 767163
178
+ 140 4000-06-30T 767192
179
+ 141 4000-07-01T 767193
180
+ 142 4000-07-31T 767223
181
+ 143 4000-08-01T 767224
182
+ 144 4000-08-31T 767254
183
+ 145 4000-09-01T 767255
184
+ 146 4000-09-30T 767284
185
+ 147 4000-10-01T 767285
186
+ 148 4000-10-31T 767315
187
+ 149 4000-11-01T 767316
188
+ 150 4000-11-30T 767345
189
+ 151 4000-12-01T 767346
190
+ 152 4000-12-31T 767376
191
+ 153 4321-01-01T 884254
192
+ 154 4321-01-31T 884284
193
+ 155 4321-02-01T 884285
194
+ 156 4321-02-28T 884312
195
+ 157 4321-03-01T 884313
196
+ 158 4321-03-31T 884343
197
+ 159 4321-04-01T 884344
198
+ 160 4321-04-30T 884373
199
+ 161 4321-05-01T 884374
200
+ 162 4321-05-31T 884404
201
+ 163 4321-06-01T 884405
202
+ 164 4321-06-30T 884434
203
+ 165 4321-07-01T 884435
204
+ 166 4321-07-31T 884465
205
+ 167 4321-08-01T 884466
206
+ 168 4321-08-31T 884496
207
+ 169 4321-09-01T 884497
208
+ 170 4321-09-30T 884526
209
+ 171 4321-10-01T 884527
210
+ 172 4321-10-31T 884557
211
+ 173 4321-11-01T 884558
212
+ 174 4321-11-30T 884587
213
+ 175 4321-12-01T 884588
214
+ 176 4321-12-31T 884618
215
+ 177 9999-01-01T 2958101
216
+ 178 9999-01-31T 2958131
217
+ 179 9999-02-01T 2958132
218
+ 180 9999-02-28T 2958159
219
+ 181 9999-03-01T 2958160
220
+ 182 9999-03-31T 2958190
221
+ 183 9999-04-01T 2958191
222
+ 184 9999-04-30T 2958220
223
+ 185 9999-05-01T 2958221
224
+ 186 9999-05-31T 2958251
225
+ 187 9999-06-01T 2958252
226
+ 188 9999-06-30T 2958281
227
+ 189 9999-07-01T 2958282
228
+ 190 9999-07-31T 2958312
229
+ 191 9999-08-01T 2958313
230
+ 192 9999-08-31T 2958343
231
+ 193 9999-09-01T 2958344
232
+ 194 9999-09-30T 2958373
233
+ 195 9999-10-01T 2958374
234
+ 196 9999-10-31T 2958404
235
+ 197 9999-11-01T 2958405
236
+ 198 9999-11-30T 2958434
237
+ 199 9999-12-01T 2958435
238
+ 200 9999-12-31T 2958465
239
+
240
+ #
241
+ # Excel 1904 date system
242
+ #
243
+ 201 1904-01-01T 0
244
+ 202 1904-01-31T 30
245
+ 203 1904-02-01T 31
246
+ 204 1904-02-29T 59
247
+ 205 1904-03-01T 60
248
+ 206 1904-03-31T 90
249
+ 207 1904-04-01T 91
250
+ 208 1904-04-30T 120
251
+ 209 1904-05-01T 121
252
+ 210 1904-05-31T 151
253
+ 211 1904-06-01T 152
254
+ 212 1904-06-30T 181
255
+ 213 1904-07-01T 182
256
+ 214 1904-07-31T 212
257
+ 215 1904-08-01T 213
258
+ 216 1904-08-31T 243
259
+ 217 1904-09-01T 244
260
+ 218 1904-09-30T 273
261
+ 219 1904-10-01T 274
262
+ 220 1904-10-31T 304
263
+ 221 1904-11-01T 305
264
+ 222 1904-11-30T 334
265
+ 223 1904-12-01T 335
266
+ 224 1904-12-31T 365
267
+ 225 1907-02-27T 1153
268
+ 226 1907-02-28T 1154
269
+ 227 1907-03-01T 1155
270
+ 228 1907-03-02T 1156
271
+ 229 1907-03-03T 1157
272
+ 230 1907-03-04T 1158
273
+ 231 1907-03-05T 1159
274
+ 232 1907-03-06T 1160
275
+ 233 1999-01-01T 34699
276
+ 234 1999-01-31T 34729
277
+ 235 1999-02-01T 34730
278
+ 236 1999-02-28T 34757
279
+ 237 1999-03-01T 34758
280
+ 238 1999-03-31T 34788
281
+ 239 1999-04-01T 34789
282
+ 240 1999-04-30T 34818
283
+ 241 1999-05-01T 34819
284
+ 242 1999-05-31T 34849
285
+ 243 1999-06-01T 34850
286
+ 244 1999-06-30T 34879
287
+ 245 1999-07-01T 34880
288
+ 246 1999-07-31T 34910
289
+ 247 1999-08-01T 34911
290
+ 248 1999-08-31T 34941
291
+ 249 1999-09-01T 34942
292
+ 250 1999-09-30T 34971
293
+ 251 1999-10-01T 34972
294
+ 252 1999-10-31T 35002
295
+ 253 1999-11-01T 35003
296
+ 254 1999-11-30T 35032
297
+ 255 1999-12-01T 35033
298
+ 256 1999-12-31T 35063
299
+ 257 2000-01-01T 35064
300
+ 258 2000-01-31T 35094
301
+ 259 2000-02-01T 35095
302
+ 260 2000-02-29T 35123
303
+ 261 2000-03-01T 35124
304
+ 262 2000-03-31T 35154
305
+ 263 2000-04-01T 35155
306
+ 264 2000-04-30T 35184
307
+ 265 2000-05-01T 35185
308
+ 266 2000-05-31T 35215
309
+ 267 2000-06-01T 35216
310
+ 268 2000-06-30T 35245
311
+ 269 2000-07-01T 35246
312
+ 270 2000-07-31T 35276
313
+ 271 2000-08-01T 35277
314
+ 272 2000-08-31T 35307
315
+ 273 2000-09-01T 35308
316
+ 274 2000-09-30T 35337
317
+ 275 2000-10-01T 35338
318
+ 276 2000-10-31T 35368
319
+ 277 2000-11-01T 35369
320
+ 278 2000-11-30T 35398
321
+ 279 2000-12-01T 35399
322
+ 280 2000-12-31T 35429
323
+ 281 2001-01-01T 35430
324
+ 282 2001-01-31T 35460
325
+ 283 2001-02-01T 35461
326
+ 284 2001-02-28T 35488
327
+ 285 2001-03-01T 35489
328
+ 286 2001-03-31T 35519
329
+ 287 2001-04-01T 35520
330
+ 288 2001-04-30T 35549
331
+ 289 2001-05-01T 35550
332
+ 290 2001-05-31T 35580
333
+ 291 2001-06-01T 35581
334
+ 292 2001-06-30T 35610
335
+ 293 2001-07-01T 35611
336
+ 294 2001-07-31T 35641
337
+ 295 2001-08-01T 35642
338
+ 296 2001-08-31T 35672
339
+ 297 2001-09-01T 35673
340
+ 298 2001-09-30T 35702
341
+ 299 2001-10-01T 35703
342
+ 300 2001-10-31T 35733
343
+ 301 2001-11-01T 35734
344
+ 302 2001-11-30T 35763
345
+ 303 2001-12-01T 35764
346
+ 304 2001-12-31T 35794
347
+ 305 2400-01-01T 181161
348
+ 306 2400-01-31T 181191
349
+ 307 2400-02-01T 181192
350
+ 308 2400-02-29T 181220
351
+ 309 2400-03-01T 181221
352
+ 310 2400-03-31T 181251
353
+ 311 2400-04-01T 181252
354
+ 312 2400-04-30T 181281
355
+ 313 2400-05-01T 181282
356
+ 314 2400-05-31T 181312
357
+ 315 2400-06-01T 181313
358
+ 316 2400-06-30T 181342
359
+ 317 2400-07-01T 181343
360
+ 318 2400-07-31T 181373
361
+ 319 2400-08-01T 181374
362
+ 320 2400-08-31T 181404
363
+ 321 2400-09-01T 181405
364
+ 322 2400-09-30T 181434
365
+ 323 2400-10-01T 181435
366
+ 324 2400-10-31T 181465
367
+ 325 2400-11-01T 181466
368
+ 326 2400-11-30T 181495
369
+ 327 2400-12-01T 181496
370
+ 328 2400-12-31T 181526
371
+ 329 4000-01-01T 765549
372
+ 330 4000-01-31T 765579
373
+ 331 4000-02-01T 765580
374
+ 332 4000-02-29T 765608
375
+ 333 4000-03-01T 765609
376
+ 334 4000-03-31T 765639
377
+ 335 4000-04-01T 765640
378
+ 336 4000-04-30T 765669
379
+ 337 4000-05-01T 765670
380
+ 338 4000-05-31T 765700
381
+ 339 4000-06-01T 765701
382
+ 340 4000-06-30T 765730
383
+ 341 4000-07-01T 765731
384
+ 342 4000-07-31T 765761
385
+ 343 4000-08-01T 765762
386
+ 344 4000-08-31T 765792
387
+ 345 4000-09-01T 765793
388
+ 346 4000-09-30T 765822
389
+ 347 4000-10-01T 765823
390
+ 348 4000-10-31T 765853
391
+ 349 4000-11-01T 765854
392
+ 350 4000-11-30T 765883
393
+ 351 4000-12-01T 765884
394
+ 352 4000-12-31T 765914
395
+ 353 4321-01-01T 882792
396
+ 354 4321-01-31T 882822
397
+ 355 4321-02-01T 882823
398
+ 356 4321-02-28T 882850
399
+ 357 4321-03-01T 882851
400
+ 358 4321-03-31T 882881
401
+ 359 4321-04-01T 882882
402
+ 360 4321-04-30T 882911
403
+ 361 4321-05-01T 882912
404
+ 362 4321-05-31T 882942
405
+ 363 4321-06-01T 882943
406
+ 364 4321-06-30T 882972
407
+ 365 4321-07-01T 882973
408
+ 366 4321-07-31T 883003
409
+ 367 4321-08-01T 883004
410
+ 368 4321-08-31T 883034
411
+ 369 4321-09-01T 883035
412
+ 370 4321-09-30T 883064
413
+ 371 4321-10-01T 883065
414
+ 372 4321-10-31T 883095
415
+ 373 4321-11-01T 883096
416
+ 374 4321-11-30T 883125
417
+ 375 4321-12-01T 883126
418
+ 376 4321-12-31T 883156
419
+ 377 9999-01-01T 2956639
420
+ 378 9999-01-31T 2956669
421
+ 379 9999-02-01T 2956670
422
+ 380 9999-02-28T 2956697
423
+ 381 9999-03-01T 2956698
424
+ 382 9999-03-31T 2956728
425
+ 383 9999-04-01T 2956729
426
+ 384 9999-04-30T 2956758
427
+ 385 9999-05-01T 2956759
428
+ 386 9999-05-31T 2956789
429
+ 387 9999-06-01T 2956790
430
+ 388 9999-06-30T 2956819
431
+ 389 9999-07-01T 2956820
432
+ 390 9999-07-31T 2956850
433
+ 391 9999-08-01T 2956851
434
+ 392 9999-08-31T 2956881
435
+ 393 9999-09-01T 2956882
436
+ 394 9999-09-30T 2956911
437
+ 395 9999-10-01T 2956912
438
+ 396 9999-10-31T 2956942
439
+ 397 9999-11-01T 2956943
440
+ 398 9999-11-30T 2956972
441
+ 399 9999-12-01T 2956973
442
+ 400 9999-12-31T 2957003
443
+
444
+
445
+ #
446
+ # The following dates are invalid.
447
+ #
448
+
449
+ #
450
+ # Excel 1900 date system
451
+ #
452
+ 401 0000-12-30T -1 # Below year range.
453
+ 402 1000-12-30T -1 # Below year range.
454
+ 403 1899-12-30T -1 # Below year range.
455
+ 404 2002-02-29T -1 # False leap-day.
456
+ 405 2000-00-00T -1 # No month or day.
457
+ 406 2000-01-00T -1 # No day.
458
+ 407 2000-00-01T -1 # No month.
459
+ 408 2000-13-01T -1 # Month out of range.
460
+ 409 2000-12-32T -1 # Day out of range.
461
+ 410 10000-01-01T -1 # Year out of range.
462
+
463
+ #
464
+ # Excel 1904 date system
465
+ #
466
+ 411 1899-12-31T -1 # Below year range.
467
+ 412 1900-01-01T -1 # Below year range.
468
+ 413 1903-12-31T -1 # Below year range.
469
+ 414 2001-02-29T -1 # False leap-day.
470
+ 415 2000-00-00T -1 # No month or day.
471
+ 416 2000-01-00T -1 # No day.
472
+ 417 2000-00-01T -1 # No month.
473
+ 418 2000-13-01T -1 # Month out of range.
474
+ 419 2000-12-32T -1 # Day out of range.
475
+ 420 10000-01-01T -1 # Year out of range.
476
+ EOS
477
+ end
478
+ end