write_xlsx 0.64.1 → 0.65.0

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +10 -1
  3. data/examples/conditional_format.rb +251 -18
  4. data/examples/demo.rb +2 -3
  5. data/examples/macros.rb +42 -0
  6. data/examples/outline_collapsed.rb +160 -0
  7. data/examples/republic.png +0 -0
  8. data/examples/shape3.rb +2 -2
  9. data/examples/shape4.rb +5 -5
  10. data/examples/shape5.rb +6 -6
  11. data/examples/shape6.rb +6 -6
  12. data/examples/shape7.rb +11 -11
  13. data/examples/shape8.rb +10 -10
  14. data/examples/shape_all.rb +0 -0
  15. data/examples/vbaProject.bin +0 -0
  16. data/lib/write_xlsx/chart.rb +656 -56
  17. data/lib/write_xlsx/chartsheet.rb +26 -2
  18. data/lib/write_xlsx/format.rb +50 -27
  19. data/lib/write_xlsx/formats.rb +32 -0
  20. data/lib/write_xlsx/package/packager.rb +45 -238
  21. data/lib/write_xlsx/package/table.rb +9 -18
  22. data/lib/write_xlsx/package/xml_writer_simple.rb +26 -9
  23. data/lib/write_xlsx/sheets.rb +223 -0
  24. data/lib/write_xlsx/sparkline.rb +140 -4
  25. data/lib/write_xlsx/version.rb +1 -1
  26. data/lib/write_xlsx/workbook.rb +34 -121
  27. data/lib/write_xlsx/worksheet/data_validation.rb +291 -0
  28. data/lib/write_xlsx/worksheet/hyperlink.rb +111 -0
  29. data/lib/write_xlsx/worksheet/page_setup.rb +170 -0
  30. data/lib/write_xlsx/worksheet.rb +1112 -1334
  31. data/test/helper.rb +1 -1
  32. data/test/package/styles/test_styles_01.rb +1 -10
  33. data/test/package/styles/test_styles_02.rb +1 -10
  34. data/test/package/styles/test_styles_03.rb +1 -10
  35. data/test/package/styles/test_styles_04.rb +1 -10
  36. data/test/package/styles/test_styles_05.rb +1 -10
  37. data/test/package/styles/test_styles_06.rb +1 -10
  38. data/test/package/styles/test_styles_07.rb +1 -10
  39. data/test/package/styles/test_styles_08.rb +1 -10
  40. data/test/package/styles/test_styles_09.rb +1 -10
  41. data/test/perl_output/conditional_format.xlsx +0 -0
  42. data/test/perl_output/outline_collapsed.xlsx +0 -0
  43. data/test/perl_output/protection.xlsx +0 -0
  44. data/test/regression/test_chart_gap01.rb +47 -0
  45. data/test/regression/test_chart_gap02.rb +47 -0
  46. data/test/regression/test_chart_gap03.rb +47 -0
  47. data/test/regression/test_format05.rb +26 -0
  48. data/test/regression/test_rich_string12.rb +32 -0
  49. data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
  50. data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
  51. data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
  52. data/test/regression/xlsx_files/format05.xlsx +0 -0
  53. data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
  54. data/test/test_example_match.rb +253 -20
  55. data/test/worksheet/test_set_column.rb +25 -0
  56. data/test/worksheet/test_worksheet_03.rb +1 -1
  57. data/test/worksheet/test_worksheet_04.rb +1 -1
  58. data/test/worksheet/test_write_array_formula_01.rb +7 -0
  59. data/test/worksheet/test_write_col_breaks.rb +2 -2
  60. data/test/worksheet/test_write_col_info.rb +8 -8
  61. data/test/worksheet/test_write_conditional_formatting.rb +4 -4
  62. data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +18 -0
  63. data/test/worksheet/test_write_header_footer.rb +8 -3
  64. data/test/worksheet/test_write_hyperlink.rb +10 -5
  65. data/test/worksheet/test_write_merge_cells.rb +6 -6
  66. data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
  67. data/test/worksheet/test_write_page_setup.rb +1 -1
  68. data/test/worksheet/test_write_row_breaks.rb +2 -2
  69. data/test/worksheet/test_write_row_element.rb +1 -1
  70. data/test/worksheet/test_write_sheet_pr.rb +2 -2
  71. data/test/worksheet/test_write_sheet_view.rb +0 -9
  72. data/test/worksheet/test_write_url.rb +19 -0
  73. data/test/worksheet/test_write_worksheet_attributes.rb +21 -0
  74. metadata +38 -5
  75. data/lib/write_xlsx/worksheet/print_style.rb +0 -51
  76. data/test/worksheet/test_write_worksheet.rb +0 -19
@@ -1219,6 +1219,13 @@ EOS
1219
1219
  @xlsx = 'conditional_format.xlsx'
1220
1220
  workbook = WriteXLSX.new(@xlsx)
1221
1221
  worksheet1 = workbook.add_worksheet
1222
+ worksheet2 = workbook.add_worksheet
1223
+ worksheet3 = workbook.add_worksheet
1224
+ worksheet4 = workbook.add_worksheet
1225
+ worksheet5 = workbook.add_worksheet
1226
+ worksheet6 = workbook.add_worksheet
1227
+ worksheet7 = workbook.add_worksheet
1228
+ worksheet8 = workbook.add_worksheet
1222
1229
 
1223
1230
  # Light red fill with dark red text.
1224
1231
  format1 = workbook.add_format(
@@ -1234,24 +1241,24 @@ EOS
1234
1241
 
1235
1242
  # Some sample data to run the conditional formatting against.
1236
1243
  data = [
1237
- [ 90, 80, 50, 10, 20, 90, 40, 90, 30, 40 ],
1238
- [ 20, 10, 90, 100, 30, 60, 70, 60, 50, 90 ],
1239
- [ 10, 50, 60, 50, 20, 50, 80, 30, 40, 60 ],
1240
- [ 10, 90, 20, 40, 10, 40, 50, 70, 90, 50 ],
1241
- [ 70, 100, 10, 90, 10, 10, 20, 100, 100, 40 ],
1242
- [ 20, 60, 10, 100, 30, 10, 20, 60, 100, 10 ],
1243
- [ 10, 60, 10, 80, 100, 80, 30, 30, 70, 40 ],
1244
- [ 30, 90, 60, 10, 10, 100, 40, 40, 30, 40 ],
1245
- [ 80, 90, 10, 20, 20, 50, 80, 20, 60, 90 ],
1246
- [ 60, 80, 30, 30, 10, 50, 80, 60, 50, 30 ]
1244
+ [ 34, 72, 38, 30, 75, 48, 75, 66, 84, 86 ],
1245
+ [ 6, 24, 1, 84, 54, 62, 60, 3, 26, 59 ],
1246
+ [ 28, 79, 97, 13, 85, 93, 93, 22, 5, 14 ],
1247
+ [ 27, 71, 40, 17, 18, 79, 90, 93, 29, 47 ],
1248
+ [ 88, 25, 33, 23, 67, 1, 59, 79, 47, 36 ],
1249
+ [ 24, 100, 20, 88, 29, 33, 38, 54, 54, 88 ],
1250
+ [ 6, 57, 88, 28, 10, 26, 37, 7, 41, 48 ],
1251
+ [ 52, 78, 1, 96, 26, 45, 47, 33, 96, 36 ],
1252
+ [ 60, 54, 81, 66, 81, 90, 80, 93, 12, 55 ],
1253
+ [ 70, 5, 46, 14, 71, 19, 66, 36, 41, 21 ]
1247
1254
  ]
1248
1255
 
1249
-
1250
- # This example below highlights cells that have a value greater than or
1251
- # equal to 50 in red and cells below that value in green.
1252
-
1256
+ ###############################################################################
1257
+ #
1258
+ # Example 1.
1259
+ #
1253
1260
  caption = 'Cells with values >= 50 are in light red. ' +
1254
- 'Values < 50 are in light green'
1261
+ 'Values < 50 are in light green.'
1255
1262
 
1256
1263
  # Write the data.
1257
1264
  worksheet1.write('A1', caption)
@@ -1261,9 +1268,9 @@ EOS
1261
1268
  worksheet1.conditional_formatting('B3:K12',
1262
1269
  {
1263
1270
  :type => 'cell',
1264
- :format => format1,
1265
1271
  :criteria => '>=',
1266
- :value => 50
1272
+ :value => 50,
1273
+ :format => format1
1267
1274
  }
1268
1275
  )
1269
1276
 
@@ -1271,9 +1278,235 @@ EOS
1271
1278
  worksheet1.conditional_formatting('B3:K12',
1272
1279
  {
1273
1280
  :type => 'cell',
1281
+ :criteria => '<',
1282
+ :value => 50,
1283
+ :format => format2
1284
+ }
1285
+ )
1286
+
1287
+
1288
+ ###############################################################################
1289
+ #
1290
+ # Example 2.
1291
+ #
1292
+ caption = 'Values between 30 and 70 are in light red. ' +
1293
+ 'Values outside that range are in light green.'
1294
+
1295
+ worksheet2.write('A1', caption)
1296
+ worksheet2.write_col('B3', data)
1297
+
1298
+ worksheet2.conditional_formatting('B3:K12',
1299
+ {
1300
+ :type => 'cell',
1301
+ :criteria => 'between',
1302
+ :minimum => 30,
1303
+ :maximum => 70,
1304
+ :format => format1
1305
+ }
1306
+ )
1307
+
1308
+ worksheet2.conditional_formatting('B3:K12',
1309
+ {
1310
+ :type => 'cell',
1311
+ :criteria => 'not between',
1312
+ :minimum => 30,
1313
+ :maximum => 70,
1314
+ :format => format2
1315
+ }
1316
+ )
1317
+
1318
+
1319
+ ###############################################################################
1320
+ #
1321
+ # Example 3.
1322
+ #
1323
+ caption = 'Duplicate values are in light red. ' +
1324
+ 'Unique values are in light green.'
1325
+
1326
+ worksheet3.write('A1', caption)
1327
+ worksheet3.write_col('B3', data)
1328
+
1329
+ worksheet3.conditional_formatting('B3:K12',
1330
+ {
1331
+ :type => 'duplicate',
1332
+ :format => format1,
1333
+ }
1334
+ )
1335
+
1336
+ worksheet3.conditional_formatting('B3:K12',
1337
+ {
1338
+ :type => 'unique',
1274
1339
  :format => format2,
1340
+ }
1341
+ )
1342
+
1343
+
1344
+ ###############################################################################
1345
+ #
1346
+ # Example 4.
1347
+ #
1348
+ caption = 'Above average values are in light red. ' +
1349
+ 'Below average values are in light green.'
1350
+
1351
+ worksheet4.write('A1', caption)
1352
+ worksheet4.write_col('B3', data)
1353
+
1354
+ worksheet4.conditional_formatting('B3:K12',
1355
+ {
1356
+ :type => 'average',
1357
+ :criteria => 'above',
1358
+ :format => format1
1359
+ }
1360
+ )
1361
+
1362
+ worksheet4.conditional_formatting('B3:K12',
1363
+ {
1364
+ :type => 'average',
1365
+ :criteria => 'below',
1366
+ :format => format2
1367
+ }
1368
+ )
1369
+
1370
+
1371
+ ###############################################################################
1372
+ #
1373
+ # Example 5.
1374
+ #
1375
+ caption = 'Top 10 values are in light red. ' +
1376
+ 'Bottom 10 values are in light green.'
1377
+
1378
+ worksheet5.write('A1', caption)
1379
+ worksheet5.write_col('B3', data)
1380
+
1381
+ worksheet5.conditional_formatting('B3:K12',
1382
+ {
1383
+ :type => 'top',
1384
+ :value => '10',
1385
+ :format => format1
1386
+ }
1387
+ )
1388
+
1389
+ worksheet5.conditional_formatting('B3:K12',
1390
+ {
1391
+ :type => 'bottom',
1392
+ :value => '10',
1393
+ :format => format2
1394
+ }
1395
+ )
1396
+
1397
+
1398
+ ###############################################################################
1399
+ #
1400
+ # Example 6.
1401
+ #
1402
+ caption = 'Cells with values >= 50 are in light red. ' +
1403
+ 'Values < 50 are in light green. Non-contiguous ranges.'
1404
+
1405
+ # Write the data.
1406
+ worksheet6.write('A1', caption)
1407
+ worksheet6.write_col('B3', data)
1408
+
1409
+ # Write a conditional format over a range.
1410
+ worksheet6.conditional_formatting('B3:K6,B9:K12',
1411
+ {
1412
+ :type => 'cell',
1413
+ :criteria => '>=',
1414
+ :value => 50,
1415
+ :format => format1
1416
+ }
1417
+ )
1418
+
1419
+ # Write another conditional format over the same range.
1420
+ worksheet6.conditional_formatting('B3:K6,B9:K12',
1421
+ {
1422
+ :type => 'cell',
1275
1423
  :criteria => '<',
1276
- :value => 50
1424
+ :value => 50,
1425
+ :format => format2
1426
+ }
1427
+ )
1428
+
1429
+
1430
+ ###############################################################################
1431
+ #
1432
+ # Example 7.
1433
+ #
1434
+ caption = 'Examples of color scales and data bars. Default colors.'
1435
+
1436
+ data = 1 .. 12
1437
+
1438
+ worksheet7.write('A1', caption)
1439
+
1440
+ worksheet7.write('B2', "2 Color Scale")
1441
+ worksheet7.write_col('B3', data)
1442
+
1443
+ worksheet7.write('D2', "3 Color Scale")
1444
+ worksheet7.write_col('D3', data)
1445
+
1446
+ worksheet7.write('F2', "Data Bars")
1447
+ worksheet7.write_col('F3', data)
1448
+
1449
+
1450
+ worksheet7.conditional_formatting('B3:B14',
1451
+ {
1452
+ :type => '2_color_scale'
1453
+ }
1454
+ )
1455
+
1456
+ worksheet7.conditional_formatting('D3:D14',
1457
+ {
1458
+ :type => '3_color_scale'
1459
+ }
1460
+ )
1461
+
1462
+ worksheet7.conditional_formatting('F3:F14',
1463
+ {
1464
+ :type => 'data_bar'
1465
+ }
1466
+ )
1467
+
1468
+
1469
+ ###############################################################################
1470
+ #
1471
+ # Example 8.
1472
+ #
1473
+ caption = 'Examples of color scales and data bars. Modified colors.'
1474
+
1475
+ data = 1 .. 12
1476
+
1477
+ worksheet8.write('A1', caption)
1478
+
1479
+ worksheet8.write('B2', "2 Color Scale")
1480
+ worksheet8.write_col('B3', data)
1481
+
1482
+ worksheet8.write('D2', "3 Color Scale")
1483
+ worksheet8.write_col('D3', data)
1484
+
1485
+ worksheet8.write('F2', "Data Bars")
1486
+ worksheet8.write_col('F3', data)
1487
+
1488
+
1489
+ worksheet8.conditional_formatting('B3:B14',
1490
+ {
1491
+ :type => '2_color_scale',
1492
+ :min_color => "#FF0000",
1493
+ :max_color => "#00FF00"
1494
+ }
1495
+ )
1496
+
1497
+ worksheet8.conditional_formatting('D3:D14',
1498
+ {
1499
+ :type => '3_color_scale',
1500
+ :min_color => "#C5D9F1",
1501
+ :mid_color => "#8DB4E3",
1502
+ :max_color => "#538ED5"
1503
+ }
1504
+ )
1505
+
1506
+ worksheet8.conditional_formatting('F3:F14',
1507
+ {
1508
+ :type => 'data_bar',
1509
+ :bar_color => '#63C384'
1277
1510
  }
1278
1511
  )
1279
1512
 
@@ -2889,7 +3122,7 @@ EOS
2889
3122
  workbook.close
2890
3123
  compare_xlsx(File.join(@perl_output, @xlsx), @xlsx)
2891
3124
  end
2892
- =begin
3125
+
2893
3126
  def test_outline_collapsed
2894
3127
  @xlsx = 'outline_collapsed.xlsx'
2895
3128
  workbook = WriteXLSX.new(@xlsx)
@@ -3074,7 +3307,7 @@ EOS
3074
3307
  worksheet.write('A12', 'Grand Total', bold)
3075
3308
  worksheet.write('B12', '=SUBTOTAL(9,B2:B10)', bold)
3076
3309
  end
3077
- =end
3310
+
3078
3311
  def test_panes
3079
3312
  @xlsx = 'panes.xlsx'
3080
3313
  workbook = WriteXLSX.new(@xlsx)
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestSetColumn < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_set_column_with_level_minus
13
+ level = -1
14
+ @worksheet.set_column('B:G', nil, nil, 0, level)
15
+ result = @worksheet.instance_variable_get(:@colinfo).first[5]
16
+ assert_equal(0, result)
17
+ end
18
+
19
+ def test_set_column_with_level_8
20
+ level = 8
21
+ @worksheet.set_column('B:G', nil, nil, 0, level)
22
+ result = @worksheet.instance_variable_get(:@colinfo).first[5]
23
+ assert_equal(7, result)
24
+ end
25
+ end
@@ -10,7 +10,7 @@ class TestWorksheet03 < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_assemble_xml_file_set_column
13
- format = Writexlsx::Format.new({}, {}, :xf_index => 1, :bold => 1)
13
+ format = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1, :bold => 1)
14
14
  @worksheet.select
15
15
  @worksheet.set_column('B:D', 5)
16
16
  @worksheet.set_column('F:F', 8, nil, 1)
@@ -10,7 +10,7 @@ class TestWorksheet04 < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_assemble_xml_file_set_row
13
- format = Writexlsx::Format.new({}, {}, :xf_index => 1, :bold => 1)
13
+ format = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1, :bold => 1)
14
14
  @worksheet.select
15
15
  @worksheet.set_row(1, 30)
16
16
  @worksheet.set_row(3, nil, nil, 1)
@@ -10,6 +10,13 @@ class TestWriteArrayFormula01 < Test::Unit::TestCase
10
10
  @worksheet = @workbook.add_worksheet('')
11
11
  end
12
12
 
13
+ def test_write_array_formula_does_not_change_formula
14
+ formula = '{=TREND(C1:C3,B1:B3)}'.freeze
15
+ assert_nothing_raised do
16
+ @worksheet.write_array_formula('A1:A3', formula)
17
+ end
18
+ end
19
+
13
20
  def test_write_array_formula
14
21
  format = nil
15
22
  @worksheet.select
@@ -10,7 +10,7 @@ class TestWriteColBreaks < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_write_col_breaks_1
13
- @worksheet.instance_variable_get(:@print_style).vbreaks = [1]
13
+ @worksheet.instance_variable_get(:@page_setup).vbreaks = [1]
14
14
  @worksheet.__send__('write_col_breaks')
15
15
  result = @worksheet.instance_variable_get(:@writer).string
16
16
  expected = '<colBreaks count="1" manualBreakCount="1"><brk id="1" max="1048575" man="1"/></colBreaks>'
@@ -18,7 +18,7 @@ class TestWriteColBreaks < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  def test_write_col_breaks_8_3_1_0
21
- @worksheet.instance_variable_get(:@print_style).vbreaks = [8, 3, 1, 0]
21
+ @worksheet.instance_variable_get(:@page_setup).vbreaks = [8, 3, 1, 0]
22
22
  @worksheet.__send__('write_col_breaks')
23
23
  result = @worksheet.instance_variable_get(:@writer).string
24
24
  expected = '<colBreaks count="3" manualBreakCount="3"><brk id="1" max="1048575" man="1"/><brk id="3" max="1048575" man="1"/><brk id="8" max="1048575" man="1"/></colBreaks>'
@@ -17,7 +17,7 @@ class TestWriteColInfo < Test::Unit::TestCase
17
17
  hidden = 0
18
18
  level = 0
19
19
  collapsed = 0
20
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
20
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
21
21
  result = @worksheet.instance_variable_get(:@writer).string
22
22
  expected = '<col min="2" max="4" width="5.7109375" customWidth="1"/>'
23
23
  assert_equal(expected, result)
@@ -31,7 +31,7 @@ class TestWriteColInfo < Test::Unit::TestCase
31
31
  hidden = true
32
32
  level = 0
33
33
  collapsed = 0
34
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
34
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
35
35
  result = @worksheet.instance_variable_get(:@writer).string
36
36
  expected = '<col min="6" max="6" width="8.7109375" hidden="1" customWidth="1"/>'
37
37
  assert_equal(expected, result)
@@ -41,11 +41,11 @@ class TestWriteColInfo < Test::Unit::TestCase
41
41
  min = 7
42
42
  max = 7
43
43
  width = nil
44
- format = Writexlsx::Format.new({}, {}, :xf_index => 1)
44
+ format = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1)
45
45
  hidden = false
46
46
  level = 0
47
47
  collapsed = 0
48
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
48
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
49
49
  result = @worksheet.instance_variable_get(:@writer).string
50
50
  expected = '<col min="8" max="8" width="9.140625" style="1"/>'
51
51
  assert_equal(expected, result)
@@ -55,11 +55,11 @@ class TestWriteColInfo < Test::Unit::TestCase
55
55
  min = 8
56
56
  max = 8
57
57
  width = 8.43
58
- format = Writexlsx::Format.new({}, {}, :xf_index => 1)
58
+ format = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1)
59
59
  hidden = false
60
60
  level = 0
61
61
  collapsed = 0
62
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
62
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
63
63
  result = @worksheet.instance_variable_get(:@writer).string
64
64
  expected = '<col min="9" max="9" width="9.140625" style="1"/>'
65
65
  assert_equal(expected, result)
@@ -73,7 +73,7 @@ class TestWriteColInfo < Test::Unit::TestCase
73
73
  hidden = false
74
74
  level = 0
75
75
  collapsed = 0
76
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
76
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
77
77
  result = @worksheet.instance_variable_get(:@writer).string
78
78
  expected = '<col min="10" max="10" width="2.7109375" customWidth="1"/>'
79
79
  assert_equal(expected, result)
@@ -87,7 +87,7 @@ class TestWriteColInfo < Test::Unit::TestCase
87
87
  hidden = true
88
88
  level = 0
89
89
  collapsed = 0
90
- @worksheet.__send__('write_col_info', min, max, width, format, hidden)
90
+ @worksheet.__send__('write_col_info', [min, max, width, format, hidden])
91
91
  result = @worksheet.instance_variable_get(:@writer).string
92
92
  expected = '<col min="12" max="12" width="0" hidden="1" customWidth="1"/>'
93
93
  assert_equal(expected, result)
@@ -10,7 +10,7 @@ class TestWriteConditionalFormatting < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_conditional_formatting_01
13
- format = Writexlsx::Format.new({}, {})
13
+ format = Writexlsx::Format.new(Writexlsx::Formats.new)
14
14
 
15
15
  @worksheet.conditional_formatting('A1',
16
16
  :type => 'cell',
@@ -25,7 +25,7 @@ class TestWriteConditionalFormatting < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_conditional_formatting_02
28
- format = Writexlsx::Format.new({}, {})
28
+ format = Writexlsx::Format.new(Writexlsx::Formats.new)
29
29
 
30
30
  @worksheet.conditional_formatting('A2',
31
31
  :type => 'cell',
@@ -40,7 +40,7 @@ class TestWriteConditionalFormatting < Test::Unit::TestCase
40
40
  end
41
41
 
42
42
  def test_conditional_formatting_03
43
- format = Writexlsx::Format.new({}, {})
43
+ format = Writexlsx::Format.new(Writexlsx::Formats.new)
44
44
 
45
45
  @worksheet.conditional_formatting('A3',
46
46
  :type => 'cell',
@@ -55,7 +55,7 @@ class TestWriteConditionalFormatting < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  def test_conditional_formatting_04
58
- format = Writexlsx::Format.new({}, {})
58
+ format = Writexlsx::Format.new(Writexlsx::Formats.new)
59
59
 
60
60
  @worksheet.conditional_formatting('A1',
61
61
  :type => 'cell',
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteFormula < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_formula_does_not_change_formula_string
13
+ formula = '=PI()'
14
+ @worksheet.write('A1', formula)
15
+
16
+ assert_equal('=PI()', formula)
17
+ end
18
+ end
@@ -8,19 +8,24 @@ class TestWriteHeaderFooter < Test::Unit::TestCase
8
8
  def setup
9
9
  @workbook = WriteXLSX.new(StringIO.new)
10
10
  @worksheet = @workbook.add_worksheet('')
11
+ @writer = @worksheet.instance_variable_get(:@writer)
11
12
  end
12
13
 
13
14
  def test_write_odd_header
14
15
  @worksheet.set_header('Page &P of &N')
15
- @worksheet.__send__('write_odd_header')
16
- result = @worksheet.instance_variable_get(:@writer).string
16
+ @worksheet.
17
+ instance_variable_get(:@page_setup).
18
+ __send__('write_odd_header', @writer)
19
+ result = @writer.string
17
20
  expected = '<oddHeader>Page &amp;P of &amp;N</oddHeader>'
18
21
  assert_equal(expected, result)
19
22
  end
20
23
 
21
24
  def test_write_odd_footer
22
25
  @worksheet.set_footer('&F')
23
- @worksheet.__send__('write_odd_footer')
26
+ @worksheet.
27
+ instance_variable_get(:@page_setup).
28
+ __send__('write_odd_footer', @writer)
24
29
  result = @worksheet.instance_variable_get(:@writer).string
25
30
  expected = '<oddFooter>&amp;F</oddFooter>'
26
31
  assert_equal(expected, result)
@@ -10,28 +10,33 @@ class TestWriteHyperlink < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_write_hyperlink_external
13
- @worksheet.__send__('write_hyperlink_external', 0, 0, 1)
13
+ hyperlink = Writexlsx::Worksheet::Hyperlink.new('')
14
+ @worksheet.__send__('write_hyperlink_external', hyperlink, 0, 0, 1)
14
15
  result = @worksheet.instance_variable_get(:@writer).string
15
16
  expected = '<hyperlink ref="A1" r:id="rId1"/>'
16
17
  assert_equal(expected, result)
17
18
  end
18
19
 
19
20
  def test_write_hyperlink_internal_sheet2
20
- @worksheet.__send__('write_hyperlink_internal', 0, 0, 'Sheet2!A1', 'Sheet2!A1')
21
+ hyperlink = Writexlsx::Worksheet::Hyperlink.new('internal:Sheet2!A1', 'Sheet2!A1')
22
+ @worksheet.__send__('write_hyperlink_internal', hyperlink, 0, 0)
21
23
  result = @worksheet.instance_variable_get(:@writer).string
22
24
  expected = '<hyperlink ref="A1" location="Sheet2!A1" display="Sheet2!A1"/>'
23
25
  assert_equal(expected, result)
24
26
  end
25
27
 
26
- def test_write_hyperlink_internal_quated_sheet
27
- @worksheet.__send__('write_hyperlink_internal', 4, 0, "'Data Sheet'!D5", "'Data Sheet'!D5")
28
+ def test_write_hyperlink_internal_quoted_sheet
29
+ hyperlink = Writexlsx::Worksheet::Hyperlink.new("internal:'Data Sheet'!D5", "'Data Sheet'!D5")
30
+ @worksheet.__send__('write_hyperlink_internal', hyperlink, 4, 0)
28
31
  result = @worksheet.instance_variable_get(:@writer).string
29
32
  expected = %q{<hyperlink ref="A5" location="'Data Sheet'!D5" display="'Data Sheet'!D5"/>}
30
33
  assert_equal(expected, result)
31
34
  end
32
35
 
33
36
  def test_write_hyperlink_internal_tooltip
34
- @worksheet.__send__('write_hyperlink_internal', 17, 0, 'Sheet2!A1', 'Sheet2!A1', 'Screen Tip 1')
37
+ hyperlink = Writexlsx::Worksheet::Hyperlink.new('internal:Sheet2!A1', 'Sheet2!A1')
38
+ hyperlink.tip = 'Screen Tip 1'
39
+ @worksheet.__send__('write_hyperlink_internal', hyperlink, 17, 0)
35
40
  result = @worksheet.instance_variable_get(:@writer).string
36
41
  expected = '<hyperlink ref="A18" location="Sheet2!A1" tooltip="Screen Tip 1" display="Sheet2!A1"/>'
37
42
  assert_equal(expected, result)
@@ -10,7 +10,7 @@ class TestWriteMergeCells < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_write_merge_cells_B3_C3_Foo_format
13
- format = Writexlsx::Format.new({}, {}, :xf_index => 1)
13
+ format = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1)
14
14
  @worksheet.select
15
15
  @worksheet.merge_range('B3:C3', 'Foo', format)
16
16
  @worksheet.__send__('assemble_xml_file')
@@ -42,8 +42,8 @@ EOS
42
42
  end
43
43
 
44
44
  def test_write_merge_cells_two_range
45
- format1 = Writexlsx::Format.new({}, {}, :xf_index => 1)
46
- format2 = Writexlsx::Format.new({}, {}, :xf_index => 2)
45
+ format1 = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1)
46
+ format2 = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 2)
47
47
  @worksheet.select
48
48
  @worksheet.merge_range('B3:C3', 'Foo', format1)
49
49
  @worksheet.merge_range('A2:D2', nil, format2)
@@ -83,9 +83,9 @@ EOS
83
83
  end
84
84
 
85
85
  def test_write_merge_range_type
86
- format1 = Writexlsx::Format.new({}, {}, :xf_index => 1)
87
- format2 = Writexlsx::Format.new({}, {}, :xf_index => 2)
88
- format3 = Writexlsx::Format.new({}, {}, :xf_index => 3)
86
+ format1 = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 1)
87
+ format2 = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 2)
88
+ format3 = Writexlsx::Format.new(Writexlsx::Formats.new, :xf_index => 3)
89
89
 
90
90
  @worksheet.set_column('B:C', 12)
91
91
  @worksheet.instance_variable_set(:@date_1904, 0)
@@ -10,7 +10,7 @@ class TestWritePageSetUpPr < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_write_page_set_up_pr
13
- @worksheet.instance_variable_get(:@print_style).fit_page = true
13
+ @worksheet.instance_variable_get(:@page_setup).fit_page = true
14
14
  @worksheet.__send__('write_page_set_up_pr')
15
15
  result = @worksheet.instance_variable_get(:@writer).string
16
16
  expected = '<pageSetUpPr fitToPage="1"/>'
@@ -13,7 +13,7 @@ class TestWorksheetWritePageSetup < Test::Unit::TestCase
13
13
  assert @worksheet
14
14
  end
15
15
 
16
- def test_write_page_setup
16
+ def test_write_page_setup2
17
17
  @worksheet.__send__('write_page_setup')
18
18
  result = @worksheet.instance_variable_get(:@writer).string
19
19
  expected = ''
@@ -10,7 +10,7 @@ class TestWriteRowBreaks < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_write_row_breaks_1
13
- @worksheet.instance_variable_get(:@print_style).hbreaks = [1]
13
+ @worksheet.instance_variable_get(:@page_setup).hbreaks = [1]
14
14
  @worksheet.__send__('write_row_breaks')
15
15
  result = @worksheet.instance_variable_get(:@writer).string
16
16
  expected = '<rowBreaks count="1" manualBreakCount="1"><brk id="1" max="16383" man="1"/></rowBreaks>'
@@ -18,7 +18,7 @@ class TestWriteRowBreaks < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  def test_write_row_breaks_15_7_3_0
21
- @worksheet.instance_variable_get(:@print_style).hbreaks = [15, 7, 3, 0]
21
+ @worksheet.instance_variable_get(:@page_setup).hbreaks = [15, 7, 3, 0]
22
22
  @worksheet.__send__('write_row_breaks')
23
23
  result = @worksheet.instance_variable_get(:@writer).string
24
24
  expected = '<rowBreaks count="3" manualBreakCount="3"><brk id="3" max="16383" man="1"/><brk id="7" max="16383" man="1"/><brk id="15" max="16383" man="1"/></rowBreaks>'