Excel-ValueWriter-XLSX
view release on metacpan or search on metacpan
lib/Excel/ValueWriter/XLSX.pm view on Meta::CPAN
my $spreadsheetml = "application/vnd.openxmlformats-officedocument.spreadsheetml";
my @sheets_xml
= map {qq{<Override PartName="/xl/worksheets/sheet$_.xml" ContentType="$spreadsheetml.worksheet+xml"/>}} 1 .. $self->n_sheets;
my @tables_xml
= map {qq{ <Override PartName="/xl/tables/table$_.xml" ContentType="$spreadsheetml.table+xml"/>}} 1 .. $self->n_tables;
my @xml = (
qq{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>},
qq{<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">},
qq{<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>},
qq{<Default Extension="xml" ContentType="application/xml"/>},
qq{<Override PartName="/xl/workbook.xml" ContentType="$spreadsheetml.sheet.main+xml"/>},
qq{<Override PartName="/xl/styles.xml" ContentType="$spreadsheetml.styles+xml"/>},
qq{<Override PartName="/xl/sharedStrings.xml" ContentType="$spreadsheetml.sharedStrings+xml"/>},
qq{<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>},
qq{<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>},
@sheets_xml,
@tables_xml,
qq{</Types>},
$writer->add_defined_name(my_constant => q{"constant_value"});
# save the worksheet
$writer->save_as($filename);
# some stupid regex checks in various parts of the ZIP archive
my $zip = Archive::Zip->new($filename);
my $content_types = $zip->contents('[Content_Types].xml');
like $content_types, qr[<Override PartName="/xl/worksheets/sheet1.xml"], 'content-types';
my $workbook = $zip->contents('xl/workbook.xml');
like $workbook, qr[<sheets><sheet name="s1" sheetId="1" r:id="rId1"/>.+</sheets>], 'workbook';
like $workbook, qr[<definedName name="my_formula" comment="no comment">'s1'!\$A\$1&'s1'!\$A\$2</], 'defined name';
my $sheet1 = $zip->contents('xl/worksheets/sheet1.xml');
like $sheet1, qr[<sheetData><row r="1" spans="1:4"><c r="A1" t="s"><v>0</v></c><c r="B1" t="s"><v>1</v>], 'sheet1';
like $sheet1, qr[<f>\Q[foo]+[bar]&[bar]\E</f>], 'formula';
t/filehandle.t view on Meta::CPAN
$writer->save_as($fh);
close $fh;
open my $fh_dump, ">:raw", $filename or die "open $filename: $!";
print $fh_dump $in_memory;
close $fh_dump;
# some stupid regex checks in various parts of the ZIP archive
my $zip = Archive::Zip->new($filename);
my $content_types = $zip->contents('[Content_Types].xml');
like $content_types, qr[<Override PartName="/xl/worksheets/sheet1.xml"], 'content-types';
my $workbook = $zip->contents('xl/workbook.xml');
like $workbook, qr[<sheets><sheet name="s1" sheetId="1" r:id="rId1"/>.+</sheets>], 'workbook';
my $sheet1 = $zip->contents('xl/worksheets/sheet1.xml');
like $sheet1, qr[<sheetData><row r="1" spans="1:4"><c r="A1" t="s"><v>0</v></c><c r="B1" t="s"><v>1</v>], 'sheet1';
like $sheet1, qr[<f>\Q[foo]+[bar]\E</f>], 'formula';
my $table1 = $zip->contents('xl/tables/table1.xml');
( run in 1.037 second using v1.01-cache-2.11-cpan-d7f47b0818f )