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.
- checksums.yaml +4 -4
- data/README.rdoc +10 -1
- data/examples/conditional_format.rb +251 -18
- data/examples/demo.rb +2 -3
- data/examples/macros.rb +42 -0
- data/examples/outline_collapsed.rb +160 -0
- data/examples/republic.png +0 -0
- data/examples/shape3.rb +2 -2
- data/examples/shape4.rb +5 -5
- data/examples/shape5.rb +6 -6
- data/examples/shape6.rb +6 -6
- data/examples/shape7.rb +11 -11
- data/examples/shape8.rb +10 -10
- data/examples/shape_all.rb +0 -0
- data/examples/vbaProject.bin +0 -0
- data/lib/write_xlsx/chart.rb +656 -56
- data/lib/write_xlsx/chartsheet.rb +26 -2
- data/lib/write_xlsx/format.rb +50 -27
- data/lib/write_xlsx/formats.rb +32 -0
- data/lib/write_xlsx/package/packager.rb +45 -238
- data/lib/write_xlsx/package/table.rb +9 -18
- data/lib/write_xlsx/package/xml_writer_simple.rb +26 -9
- data/lib/write_xlsx/sheets.rb +223 -0
- data/lib/write_xlsx/sparkline.rb +140 -4
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +34 -121
- data/lib/write_xlsx/worksheet/data_validation.rb +291 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +111 -0
- data/lib/write_xlsx/worksheet/page_setup.rb +170 -0
- data/lib/write_xlsx/worksheet.rb +1112 -1334
- data/test/helper.rb +1 -1
- data/test/package/styles/test_styles_01.rb +1 -10
- data/test/package/styles/test_styles_02.rb +1 -10
- data/test/package/styles/test_styles_03.rb +1 -10
- data/test/package/styles/test_styles_04.rb +1 -10
- data/test/package/styles/test_styles_05.rb +1 -10
- data/test/package/styles/test_styles_06.rb +1 -10
- data/test/package/styles/test_styles_07.rb +1 -10
- data/test/package/styles/test_styles_08.rb +1 -10
- data/test/package/styles/test_styles_09.rb +1 -10
- data/test/perl_output/conditional_format.xlsx +0 -0
- data/test/perl_output/outline_collapsed.xlsx +0 -0
- data/test/perl_output/protection.xlsx +0 -0
- data/test/regression/test_chart_gap01.rb +47 -0
- data/test/regression/test_chart_gap02.rb +47 -0
- data/test/regression/test_chart_gap03.rb +47 -0
- data/test/regression/test_format05.rb +26 -0
- data/test/regression/test_rich_string12.rb +32 -0
- data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
- data/test/regression/xlsx_files/format05.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
- data/test/test_example_match.rb +253 -20
- data/test/worksheet/test_set_column.rb +25 -0
- data/test/worksheet/test_worksheet_03.rb +1 -1
- data/test/worksheet/test_worksheet_04.rb +1 -1
- data/test/worksheet/test_write_array_formula_01.rb +7 -0
- data/test/worksheet/test_write_col_breaks.rb +2 -2
- data/test/worksheet/test_write_col_info.rb +8 -8
- data/test/worksheet/test_write_conditional_formatting.rb +4 -4
- data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +18 -0
- data/test/worksheet/test_write_header_footer.rb +8 -3
- data/test/worksheet/test_write_hyperlink.rb +10 -5
- data/test/worksheet/test_write_merge_cells.rb +6 -6
- data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
- data/test/worksheet/test_write_page_setup.rb +1 -1
- data/test/worksheet/test_write_row_breaks.rb +2 -2
- data/test/worksheet/test_write_row_element.rb +1 -1
- data/test/worksheet/test_write_sheet_pr.rb +2 -2
- data/test/worksheet/test_write_sheet_view.rb +0 -9
- data/test/worksheet/test_write_url.rb +19 -0
- data/test/worksheet/test_write_worksheet_attributes.rb +21 -0
- metadata +38 -5
- data/lib/write_xlsx/worksheet/print_style.rb +0 -51
- data/test/worksheet/test_write_worksheet.rb +0 -19
data/test/test_example_match.rb
CHANGED
@@ -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
|
-
[
|
1238
|
-
[
|
1239
|
-
[
|
1240
|
-
[
|
1241
|
-
[
|
1242
|
-
[
|
1243
|
-
[
|
1244
|
-
[
|
1245
|
-
[
|
1246
|
-
[
|
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
|
-
#
|
1251
|
-
#
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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(:@
|
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(:@
|
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(
|
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(
|
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.
|
16
|
-
|
16
|
+
@worksheet.
|
17
|
+
instance_variable_get(:@page_setup).
|
18
|
+
__send__('write_odd_header', @writer)
|
19
|
+
result = @writer.string
|
17
20
|
expected = '<oddHeader>Page &P of &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.
|
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>&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
|
-
|
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
|
-
|
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
|
27
|
-
|
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
|
-
|
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(
|
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(
|
46
|
-
format2 = Writexlsx::Format.new(
|
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(
|
87
|
-
format2 = Writexlsx::Format.new(
|
88
|
-
format3 = Writexlsx::Format.new(
|
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(:@
|
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
|
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(:@
|
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(:@
|
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>'
|