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.
- 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>'
|