write_xlsx 0.64.1 → 0.65.0

Sign up to get free protection for your applications and to get access to all the features.
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>'