File: 46_save_parser.t

package info (click to toggle)
libspreadsheet-parseexcel-perl 0.6500-1.1%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,852 kB
  • sloc: perl: 9,442; makefile: 12
file content (86 lines) | stat: -rwxr-xr-x 1,883 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!perl -w

use strict;
use Test::More;

eval "use Spreadsheet::WriteExcel; 1;"
	or plan( skip_all => "Spreadsheet::ParseExcel::SaveParser requires Spreadsheet::WriteExcel" );

use utf8;
use Encode qw(encode);

plan(tests => 7);

use_ok ('Spreadsheet::ParseExcel::SaveParser');

use_ok ('Spreadsheet::WriteExcel');

my $xl_base_name = 't/excel_files/46_save_parser.xls';

my $xl_base = Spreadsheet::WriteExcel->new($xl_base_name);

# testing merged cells

# first, we need to generate excel file with merged cells
my $worksheet = $xl_base->add_worksheet();

my $format = $xl_base->add_format(
	border  => 6,
	valign  => 'vcenter',
	align   => 'center',
);

$worksheet->merge_range('A1:B2', 'V & H', $format);

$worksheet->merge_range('E5:H8', 'V & H', $format);

$worksheet->fit_to_pages(1, 1);

$xl_base->close;

# parse excel and write modified file
my $xl_parser = Spreadsheet::ParseExcel::SaveParser->new;
my $template = $xl_parser->Parse($xl_base_name);

# test writing data to merged cell
$template->worksheet (0)->AddCell (4, 4, 'V & H mod');

my $workbook;
{
    local $^W = 0;
 
    $workbook = $template->SaveAs ($xl_base_name . '.mod.xls');
}

$workbook->close;

# parse modified file and check for merged cell

my $template_mod = $xl_parser->Parse ($xl_base_name . '.mod.xls');

my $worksheet_mod = $template_mod->worksheet (0);

my $merged_areas = $worksheet_mod->get_merged_areas;

ok scalar @$merged_areas == 2, 'merged areas count';

my @fit = $worksheet_mod->get_fit_to_pages;

is_deeply (\@fit, [1, 1], 'fix for fit to pages');

#use Data::Dumper;
#warn Dumper $merged_areas;

# RowHeight

is_deeply $merged_areas->[0], [0, 0, 1, 1];

is_deeply $merged_areas->[1], [4, 4, 7, 7], 'overwritten merged cell position';

ok $worksheet_mod->Cell (4, 4)->value eq 'V & H mod', 'overwritten merged cell value';

unlink $xl_base_name;

unlink $xl_base_name . '.mod.xls';

1;