Excel-Writer-XLSX-0.76/000755 000765 000024 00000000000 12260573500 014615 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/.travis.yml000644 000765 000024 00000000126 12241403702 016720 0ustar00Johnstaff000000 000000 language: perl perl: - "5.18" - "5.16" - "5.14" - "5.12" - "5.10" - "5.8" Excel-Writer-XLSX-0.76/bin/000755 000765 000024 00000000000 12260573472 015375 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/Changes000644 000765 000024 00000041407 12260572553 016125 0ustar00Johnstaff000000 000000 Revision history for Perl module Excel::Writer::XLSX. + New feature/improvement. - Removed/deprecated feature. ! Bug fix. 0.75 2013-12-31 + Added date axis handling to charts. + Added support for non-contiguous chart ranges. ! Fix to remove duplicate set_column() entries. 0.75 2013-12-02 + Added interval unit option for category axes. ! Fix for axis name font rotation. Issue #83. ! Fix for several minor issues with Pie chart legends. 0.74 2013-11-17 ! Improved defined name validation. Issue #82. + Added set_title() option to turn off automatic title. Issue #81. + Allow positioning of plotarea, legend, title and axis names. Issue #80. ! Fix for modification of user params in condtional_formatting(). Issue #79. ! Fix for star style markers. 0.73 2013-11-08 + Added custom error bar option to charts. ! Fix for tables added in non-sequential order. ! Fix for scatter charts with markers on non-marker series. 0.72 2013-08-28 ! Fix for charts and images that cross rows and columns that are hidden or formatted but which donт€™t have size changes. 0.71 2013-08-24 ! Fixed issue in image handling. ! Added fix to ensure formula calculation on load regardless of Excel version. 0.70 2013-07-30 ! Fix for rendering images that are the same size as cell boundaries. GitHub issue #70. ! Added fix for inaccurate column width calculation. + Added Chart line smoothing option. 0.69 2013-06-12 + Added chart font rotation property. Mainly for use with date axes to make the display more compact. ! Fix for 0 data in Worksheet Tables. #65. Reported by David Gang. 0.68 2013-06-06 ! Fix for issue where shapes on one worksheet corrupted charts on a subsequent worksheet. #52. ! Fix for issue where add_button() invalidated cell comments in the same workbook. #64. 0.67 2013-05-06 ! Fix for set_selection() with cell range. 0.66 2013-04-12 ! Fix for issue with image scaling. 0.65 2012-12-31 + Added options to format series Gap/Overlap for Bar/Column charts. 0.64 2012-12-22 + Added the option to format individual points in a chart series. This allows Pie chart segments to be formatted. 0.63 2012-12-19 + Added Chart data tools such as: Error Bars Up-Down Bars High-Low Lines Drop Lines. See the chart_data_tool.pl example. 0.62 2012-12-12 + Added option for adding a data table to a Chart X-axis. See output from chart_data_table.pl example. 0.61 2012-12-11 + Allow a cell url string to be over written with a number or formula using a second write() call to the same cell. The url remains intact. Issue #48. + Added set_default_row() method to set worksheet default values for rows. + Added Chart set_size() method to set the chart dimensions. 0.60 2012-12-05 + Added Excel form buttons via the worksheet insert_button() method. This allows the user to tie the button to an embedded macro imported using add_vba_project(). The portal to the dungeon dimensions is now fully open. ! Fix escaping of special character in URLs to write_url(). Issue #45. ! Fix for 0 access/modification date on vbaProject.bin files extracted using extract_vba. The date isn't generally set correctly in the source xlsm file but this caused issues on Windows. 0.59 2012-11-26 + Added macro support via VBA projects extracted from existing Excel xlsm files. User defined functions can be called from worksheets and macros can be called by the user but they cannot, currently, be linked to form elements such as buttons. 0.58 2012-11-23 + Added chart area and plot area formatting. 0.57 2012-11-21 + Add major and minor axis chart gridline formatting. 0.56 2012-11-18 ! Fix for issue where chart creation order had to be the same as the insertion order or charts would be out of sync. Frederic Claude Sievert and Hurricup. Issue #42. ! Fixed issue where gridlines didn't work in Scatter and Stock charts. Issue #41. ! Fixed default XML encoding to avoid/solve various issues with XML encoding created by the XML changes in version 0.51. Issue #43. 0.55 2012-11-10 + Added Sparklines. ! Fix for issue with "begins with" and "ends with" Conditional Formatting. Issue #40. 0.54 2012-11-05 + Added font manipulation to Charts. + Added number formats to Chart axes. + Added Radar Charts. ! Fix for XML encoding in write_url() internal/external links. Issue #37. 0.53 2012-10-10 ! Fix for broken MANIFEST file. 0.52 2012-10-09 ! Added dependency on Date::Calc to xl_parse_date.t test. Closes #30 and RT#79790. ! Fix for XML encoding of URLs. Closes #31. + Refactored XMLWriter into a single class. This breaks the last remaining ties to XML::Writer to allow for future additions and optimisations. Renamed methods for consistency. 0.51 2012-09-16 + Speed optimisations. This release contains a series of optimisations aimed at increasing the speed of Excel::Writer::XLSX. The overall improvement is around 66%. See the SPEED AND MEMORY USAGE section of the documentation. + Memory usage optimisations. This fixes an issue where the memory used for the worksheet data tables was freed but then brought back into usage due to the use of an array as the base data structure. This meant that the memory usage still continued to grow with large row counts. ! Added warning about Excel limit to 65,530 urls per worksheet. ! Limit URLs to Excel's limit of 255 chars. Fixes Issue #26. ! Fix for whitespace in urls. Fixes Issue #25. ! Fix for solid fill of type 'none' is chart series. Closes issue #27 reported on Stack Overflow. ! Modified write_array_formula() to apply format over full range. Fixes issue #18. ! Fix for issue with chart formula referring to non-existent sheet name. It is now a fatal error to specify a chart series formula that refers to an non-existent worksheet name. Fixes issue #17. 0.50 2012-09-09 + Added option to add secondary axes to charts. Thanks to Eric Johnson and to Foxtons for sponsoring the work. + Added add_table() method to add Excel tables to worksheets. ! Fix for right/left auto shape connection when destination is left of source shape. Thanks to Dave Clarke for fix. ! Fix for issue #16. Format::copy() method not protecting values. The Format copy() method over-writes certain new properties that weren't in Spreadsheet::WriteExcel. This fixes the issue by storing and restoring the properties during copy. ! Fix for issue #15: write_url with local sub directory. Local sub-directories were incorrectly treated as file:// external. ! Fix for for issue #14: Non-numeric data in chart value axes are now converted to zero in chart data cache, as required by Excel. 0.49 2012-07-12 + Added show_blanks_as() chart method to control the display of blank data. + Added show_hidden_data() chart method to control the display of data in hidden rows and columns. ! Added fix for fg/bg colours in conditional formats which are shared with cell formats. Reported by Patryk Kwiatkowski. ! Fix for xl_parse_time() with hours > 24. Github issue #11. ! Fixed lc() warning in Utility.pm in recent perls. Github issue #10. ! Fixed issue with non-integer shape dimensions. Thanks Dave Clarke. ! Fixed error handling for shape connectors. Thanks Dave Clarke. 0.48 2012-06-25 + Added worksheet shapes. A major new feature. Patch, docs, tests and example programs by Dave Clarke. + Added stacked and percent_stacked chart subtypes to Area charts. ! Added fix for chart names in embedded charts. Reported by Matt Freel. ! Fixed bug with Unicode characters in rich strings. Reported by Michiel van Rhee. 0.47 2012-04-10 + Additional conditional formatting options such as color, type and value for 2_color_scale, 3_color_scale and data_bar. Added option for non- contiguous data ranges as well. + Additional chart data label parameters such as position, leader lines and percentage. Initial patch by George E. Tarrant III. ! Fixed for Autofilter filter_column() offset bug reported by Krishna Rajendran. ! Fix for write_url() where url contains invalid whitespace, RT #75808, reported by Oleg G. The write_url() method now throws a warning and rejects the invalid url to avoid file corruption. 0.46 2012-02-10 ! Fix for x-axis major/minor units in scatter charts. Reported by Carey Drake. 0.45 2012-01-09 ! Changed from File::Temp tempdir() to newdir() to cleanup the temp dir at object destruction rather than the program exit. Also improved error reporting when mkdir() fails. Reported by Kevin Ruscoe. ! Fix to escape control characters in strings. Reported by Kevin Ruscoe. 0.44 2012-01-05 ! Fix for missing return value from Workbook::close() with filehandles. RT 73724. Reported and patched by Charles Bailey. ! Fixed support special filename/filehandle '-'. RT 73424. Reported by YuvalL and Charles Bailey. ! Fix for non-working reverse x_axis with Scatter charts. Reported by Viqar Abbasi. 0.43 2011-12-18 + Added chart axis label position option. + Added invert_if_negative option for chart series fills. 0.42 2011-12-17 ! Fix for set_optimization() where first row isn't 0. Reported by Giulio Orsero. ! Fix to preserve whitespace in inline strings. Reported by Giulio Orsero. 0.41 2011-12-10 ! Increased IO::File requirement to 1.14 to prevent taint issues on some 5.8.8/5.8.6 platforms. 0.40 2011-12-07 ! Fix for unreadable xlsx files when generator program has -l on the commandline or had redefined $/. Github issue #7. Reported by John Riksten. 0.39 2011-12-03 ! Fix for spurious Mac ._Makefile.PL in the distro which prevented automated testing and installation. Github issue #5. Reported by Tobias Oetiker. ! Fix for failing test sub_convert_date_time.t due to extra precision on longdouble perls. RT #71762 Reported by Douglas Wilson. 0.38 2011-12-03 + Backported from perl 5.10.0 to perl 5.8.2. You are killing me guys. Killing me. 0.37 2011-12-02 + Added additional axis options: minor and major units, log base and axis crossing. 0.36 2011-11-29 + Added "min" and "max" options to axis ranges via set_x_axis() and set_y_axis. 0.35 2011-11-27 + Added Scatter chart subtypes: markers_only (the default), straight_with_markers, straight, smooth_with_markers and smooth. 0.34 2011-11-04 + Added set_optimization() method to reduce memory usage for very large data sets. 0.33 2011-10-28 + Added addition conditional formatting types: cell, date, time_period, text, average, duplicate, unique, top, bottom, blanks, no_blanks, errors, no_errors, 2_color_scale, 3_color_scale, data_bar and formula. 0.32 2011-10-20 ! Fix for format alignment bug. Reported by Roderich Schupp. 0.31 2011-10-18 + Added basic conditional formatting via the conditional_format() Worksheet method. More conditional formatting types will follow. + Added conditional_format.pl example program. 0.30 2011-10-06 + Added stacked and percent_stacked chart subtypes to Bar and Column chart types. 0.29 2011-10-05 + Added the merge_range_type() method for finer control over the types written using merge_range(). 0.28 2011-10-04 + Added default write_formula() value for compatibility with Google docs. + Updated Example.pm docs with Excel 2007 images. 0.27 2011-10-02 + Excel::Writer::XLSX is now 100% functionally and API compatible with Spreadsheet::WriteExcel. + Added outlines and grouping functionality. + Added outline.pl and outline_collapsed.pl example programs. 0.26 2011-10-01 + Added cell comment methods and options. Thanks to Barry Downes for providing the interim functionality + Added comments1.pl and comments2.pl example programs. 0.25 2011-06-16 + Added option to add defined names to workbooks and worksheets. Added defined_name.pl example program. ! Fix for fit_to_pages() with zero values. Reported by Aki Huttunen. 0.24 2011-06-11 + Added data validation and data_validate.pl example. + Added the option to turn off data series in chart legends. 0.23 2011-05-26 ! Fix for charts ranges containing empty values. 0.22 2011-05-22 + Added 'reverse' option to set_x_axis() and set_y_axis() in charts. 0.21 2011-05-11 ! Fixed support for filehandles. + Added write_to_scalar.pl and filehandle.pl example programs. 0.20 2011-05-10 ! Fix for programs running under taint mode. + Added set_tempdir(). ! Fix for color formatting in chartsheets. 0.19 2011-05-05 + Added new chart formatting options for line properties, markers, trendlines and data labels. See Chart.pm. + Added partial support for insert_image(). + Improved backward compatibility for deprecated methods store_formula() and repeat_formula(). ! Fixed missing formatting for array formulas. Reported by Cyrille Gourves. ! Fixed issue with chart scaling that caused "unreadable content" Excel error. 0.18 2011-04-07 + Added set_properties() method to add document properties. Added properties.pl and tests. 0.17 2011-04-04 + Added charting feature. See Chart.pm. ! Fix for file corruption issue when there are more than 10 custom colours. Reported by Brian R. Landy. 0.16 2011-03-04 ! Clarified support for deprecated methods in documentation and added backward compatible methods in some cases. ! Fix for center_horizontally() issue. Reported by Giulio Orsero. ! Fix for number like strings getting written as strings instead of numbers. Reported by Giulio Orsero. 0.15 2011-03-01 ! Fix for issues with set_row() not passing on format to cells in the row. Reported by Giulio Orsero. ! Fixes for related issue in set_column(). 0.14 2011-02-26 + Added write_rich_string() method to write a string with multiple formats. + Added rich_strings.pl example program. + Added set_1904() method for dates with a 1904 epoch. + Added date_time.pl example program. ! Fixed issue where leading and trailing whitespace in cell strings wasn't preserved. 0.13 2011-02-22 + Added additional page setup methods: set_zoom() right_to_left() hide_zero() set_custom_color() set_tab_color() protect() + Added Cell property methods: set_locked() set_hidden() + Added example programs: hide_sheet.pl protection.pl right_to_left.pl tab_colors.pl 0.12 2011-02-19 + Added set_selection() method for selecting cells. 0.11 2011-02-17 ! Fix for temp dirs not been removed after xlsx file creation. http://rt.cpan.org/Ticket/Display.html?id=65816 Reported by Andreas Koenig. 0.10 2011-02-17 + Added freeze_panes() and split_panes(). + Added panes.pl example program. 0.09 2011-02-13 + Added write_url() for internal and external hyperlinks. + Added hyperlink1+2.pl example programs. 0.08 2011-02-03 + Added autofilter(), column_filter() and column_filter_list() methods. + Added autofilter.pl example program. 0.07 2011-01-28 + Added additional Page Setup methods. set_page_view() repeat_rows() repeat_columns() hide_gridlines() print_row_col_headers() print_area() print_across() fit_to_pages() set_start_page() set_print_scale() set_h_pagebreaks() set_v_pagebreaks() + Added headers.pl example program. 0.06 2011-01-19 ! Added fix for XML characters in attributes. Reported by John Roll. + Added initial Page Setup methods. set_landscape() set_portrait() set_paper() center_horizontally() center_vertically() set_margins() set_header() set_footer() 0.05 2011-01-04 + Added support for array_formulas. See the docs for write_array_formula() and the example program. 0.04 2011-01-03 + Added merge_range() for merging cells. With tests and examples. 0.03 2011-01-03 + Optimisations. The module is now 100% faster. 0.02 2010-10-12 ! Fixed dependencies in Makefile. 0.01 2010-10-11 First CPAN release. Excel-Writer-XLSX-0.76/examples/000755 000765 000024 00000000000 12260573500 016433 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/lib/000755 000765 000024 00000000000 12260573467 015377 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/Makefile.PL000644 000765 000024 00000002762 12241403702 016571 0ustar00Johnstaff000000 000000 #!/usr/bin/perl use ExtUtils::MakeMaker; use strict; use warnings; require 5.008002; my %deps = ( 'Archive::Zip' => 1.30, 'IO::File' => 1.14, 'File::Temp' => 0.19, ); my %resources = ( homepage => 'http://jmcnamara.github.com/excel-writer-xlsx/', repository => 'http://github.com/jmcnamara/excel-writer-xlsx', bugtracker => 'http://github.com/jmcnamara/excel-writer-xlsx/issues', MailingList => 'http://groups.google.com/group/spreadsheet-writeexcel', ); my %params = ( 'AUTHOR' => 'John McNamara (jmcnamara@cpan.org)', 'ABSTRACT' => 'Create a new file in the Excel 2007+ XLSX format.', 'NAME' => 'Excel::Writer::XLSX', 'VERSION_FROM' => 'lib/Excel/Writer/XLSX.pm', 'NEEDS_LINKING' => 0, 'dist' => { COMPRESS => 'gzip --best', SUFFIX => 'gz' }, 'PREREQ_PM' => \%deps, 'EXE_FILES' => ['bin/extract_vba'], 'test' => { TESTS => 't/*/*.t t/*/*/*.t' } ); if ( $ExtUtils::MakeMaker::VERSION ge '6.46' ) { $params{META_MERGE} = { resources => \%resources }; } if ( $ExtUtils::MakeMaker::VERSION ge '6.30_01' ) { $params{LICENSE} = 'perl'; } WriteMakefile(%params); ############################################################################### # # Additional target for Excel::Writer::XLSX: # mydocs: make the Examples.pm doc. # sub MY::postamble { "mydocs:\n" . "\tperl -Mblib examples/gen_examples_pod.pl examples " . "> lib/Excel/Writer/XLSX/Examples.pm\n\n"; } Excel-Writer-XLSX-0.76/MANIFEST000644 000765 000024 00000132460 12260573500 015754 0ustar00Johnstaff000000 000000 .travis.yml Changes MANIFEST Makefile.PL README bin/extract_vba examples/README examples/a_simple.pl examples/array_formula.pl examples/autofilter.pl examples/bug_report.pl examples/cgi.pl examples/chart_area.pl examples/chart_bar.pl examples/chart_column.pl examples/chart_data_table.pl examples/chart_data_tools.pl examples/chart_line.pl examples/chart_pie.pl examples/chart_radar.pl examples/chart_scatter.pl examples/chart_secondary_axis.pl examples/chart_stock.pl examples/colors.pl examples/comments1.pl examples/comments2.pl examples/conditional_format.pl examples/data_validate.pl examples/date_time.pl examples/defined_name.pl examples/demo.pl examples/diag_border.pl examples/filehandle.pl examples/formats.pl examples/gen_examples_pod.pl examples/headers.pl examples/hide_row_col.pl examples/hide_sheet.pl examples/hyperlink1.pl examples/hyperlink2.pl examples/indent.pl examples/macros.pl examples/merge1.pl examples/merge2.pl examples/merge3.pl examples/merge4.pl examples/merge5.pl examples/merge6.pl examples/mod_perl1.pl examples/mod_perl2.pl examples/outline.pl examples/outline_collapsed.pl examples/panes.pl examples/properties.pl examples/protection.pl examples/regions.pl examples/republic.png examples/rich_strings.pl examples/right_to_left.pl examples/sales.pl examples/shape1.pl examples/shape2.pl examples/shape3.pl examples/shape4.pl examples/shape5.pl examples/shape6.pl examples/shape7.pl examples/shape8.pl examples/shape_all.pl examples/sparklines1.pl examples/sparklines2.pl examples/stats.pl examples/stats_ext.pl examples/stocks.pl examples/tab_colors.pl examples/tables.pl examples/unicode_2022_jp.pl examples/unicode_2022_jp.txt examples/unicode_8859_11.pl examples/unicode_8859_11.txt examples/unicode_8859_7.pl examples/unicode_8859_7.txt examples/unicode_big5.pl examples/unicode_big5.txt examples/unicode_cp1251.pl examples/unicode_cp1251.txt examples/unicode_cp1256.pl examples/unicode_cp1256.txt examples/unicode_cyrillic.pl examples/unicode_koi8r.pl examples/unicode_koi8r.txt examples/unicode_polish_utf8.pl examples/unicode_polish_utf8.txt examples/unicode_shift_jis.pl examples/unicode_shift_jis.txt examples/vbaProject.bin examples/write_handler1.pl examples/write_handler2.pl examples/write_handler3.pl examples/write_handler4.pl examples/write_to_scalar.pl lib/Excel/Writer/XLSX.pm lib/Excel/Writer/XLSX/Chart.pm lib/Excel/Writer/XLSX/Chart/Area.pm lib/Excel/Writer/XLSX/Chart/Bar.pm lib/Excel/Writer/XLSX/Chart/Column.pm lib/Excel/Writer/XLSX/Chart/Line.pm lib/Excel/Writer/XLSX/Chart/Pie.pm lib/Excel/Writer/XLSX/Chart/Radar.pm lib/Excel/Writer/XLSX/Chart/Scatter.pm lib/Excel/Writer/XLSX/Chart/Stock.pm lib/Excel/Writer/XLSX/Chartsheet.pm lib/Excel/Writer/XLSX/Drawing.pm lib/Excel/Writer/XLSX/Examples.pm lib/Excel/Writer/XLSX/Format.pm lib/Excel/Writer/XLSX/Package/App.pm lib/Excel/Writer/XLSX/Package/Comments.pm lib/Excel/Writer/XLSX/Package/ContentTypes.pm lib/Excel/Writer/XLSX/Package/Core.pm lib/Excel/Writer/XLSX/Package/Packager.pm lib/Excel/Writer/XLSX/Package/Relationships.pm lib/Excel/Writer/XLSX/Package/SharedStrings.pm lib/Excel/Writer/XLSX/Package/Styles.pm lib/Excel/Writer/XLSX/Package/Table.pm lib/Excel/Writer/XLSX/Package/Theme.pm lib/Excel/Writer/XLSX/Package/VML.pm lib/Excel/Writer/XLSX/Package/XMLwriter.pm lib/Excel/Writer/XLSX/Shape.pm lib/Excel/Writer/XLSX/Utility.pm lib/Excel/Writer/XLSX/Workbook.pm lib/Excel/Writer/XLSX/Worksheet.pm t/chart/area/sub_write_xml_declaration.t t/chart/bar/sub_write_bar_dir.t t/chart/bar/sub_write_grouping.t t/chart/bar/sub_write_xml_declaration.t t/chart/column/sub_write_xml_declaration.t t/chart/line/sub_write_xml_declaration.t t/chart/pie/sub_write_xml_declaration.t t/chart/scatter/sub_write_xml_declaration.t t/chart/stock/sub_write_xml_declaration.t t/chart/sub_add_series.t t/chart/sub_process_names.t t/chart/sub_write_a_latin.t t/chart/sub_write_auto.t t/chart/sub_write_ax_id.t t/chart/sub_write_ax_pos.t t/chart/sub_write_chart_space.t t/chart/sub_write_cross_ax.t t/chart/sub_write_crosses.t t/chart/sub_write_d_lbls.t t/chart/sub_write_format_code.t t/chart/sub_write_idx.t t/chart/sub_write_label_align.t t/chart/sub_write_label_offset.t t/chart/sub_write_lang.t t/chart/sub_write_layout.t t/chart/sub_write_legend.t t/chart/sub_write_legend_pos.t t/chart/sub_write_major_gridlines.t t/chart/sub_write_marker.t t/chart/sub_write_marker_size.t t/chart/sub_write_marker_value.t t/chart/sub_write_num_cache.t t/chart/sub_write_number_format.t t/chart/sub_write_order.t t/chart/sub_write_orientation.t t/chart/sub_write_page_margins.t t/chart/sub_write_page_setup.t t/chart/sub_write_plot_vis_only.t t/chart/sub_write_pt.t t/chart/sub_write_pt_count.t t/chart/sub_write_series_formula.t t/chart/sub_write_style.t t/chart/sub_write_symbol.t t/chart/sub_write_tick_lbl_pos.t t/chart/sub_write_v.t t/chart/sub_write_xml_declaration.t t/chartsheet/chartsheet01.t t/chartsheet/chartsheet_subs.t t/chartsheet/sub_write_xml_declaration.t t/drawing/drawing_chart_01.t t/drawing/drawing_image_01.t t/drawing/drawing_shape_01.t t/drawing/drawing_shape_02.t t/drawing/drawing_shape_03.t t/drawing/drawing_shape_04.t t/drawing/drawing_shape_05.t t/drawing/drawing_shape_06.t t/drawing/drawing_shape_07.t t/drawing/drawing_shape_08.t t/drawing/sub_write_a_graphic_frame_locks.t t/drawing/sub_write_c_chart.t t/drawing/sub_write_c_nv_graphic_frame_pr.t t/drawing/sub_write_c_nv_pr.t t/drawing/sub_write_col.t t/drawing/sub_write_col_off.t t/drawing/sub_write_ext.t t/drawing/sub_write_pos.t t/drawing/sub_write_row.t t/drawing/sub_write_row_off.t t/drawing/sub_write_xfrm_extension.t t/drawing/sub_write_xfrm_offset.t t/drawing/sub_write_xml_declaration.t t/lib/TestFunctions.pm t/package/app/app01.t t/package/app/app02.t t/package/app/app03.t t/package/app/sub_write_xml_declaration.t t/package/comments/comments_01.t t/package/comments/sub_write_text_t.t t/package/comments/sub_write_xml_declaration.t t/package/content_types/content_types.t t/package/content_types/sub_write_default.t t/package/content_types/sub_write_override.t t/package/content_types/sub_write_xml_declaration.t t/package/core/core01.t t/package/core/core02.t t/package/core/sub_write_xml_declaration.t t/package/relationships/relationships.t t/package/relationships/sheet_rels.t t/package/relationships/sub_write_xml_declaration.t t/package/shared_strings/shared_strings01.t t/package/shared_strings/shared_strings02.t t/package/shared_strings/sub_write_si.t t/package/shared_strings/sub_write_sst.t t/package/shared_strings/sub_write_xml_declaration.t t/package/styles/styles_01.t t/package/styles/styles_02.t t/package/styles/styles_03.t t/package/styles/styles_04.t t/package/styles/styles_05.t t/package/styles/styles_06.t t/package/styles/styles_07.t t/package/styles/styles_08.t t/package/styles/styles_09.t t/package/styles/sub_write_border.t t/package/styles/sub_write_borders.t t/package/styles/sub_write_cell_style.t t/package/styles/sub_write_cell_style_xfs.t t/package/styles/sub_write_cell_styles.t t/package/styles/sub_write_cell_xfs.t t/package/styles/sub_write_colors.t t/package/styles/sub_write_default_fill.t t/package/styles/sub_write_dxfs.t t/package/styles/sub_write_fills.t t/package/styles/sub_write_font.t t/package/styles/sub_write_fonts.t t/package/styles/sub_write_mru_colors.t t/package/styles/sub_write_num_fmt.t t/package/styles/sub_write_num_fmts.t t/package/styles/sub_write_style_sheet.t t/package/styles/sub_write_style_xf.t t/package/styles/sub_write_xf.t t/package/styles/sub_write_xml_declaration.t t/package/table/sub_write_auto_filter.t t/package/table/sub_write_table_column.t t/package/table/sub_write_table_style_info.t t/package/table/sub_write_xml_declaration.t t/package/table/table01.t t/package/table/table02.t t/package/table/table03.t t/package/table/table04.t t/package/table/table05.t t/package/table/table06.t t/package/table/table07.t t/package/table/table08.t t/package/table/table09.t t/package/table/table10.t t/package/table/table11.t t/package/table/table12.t t/package/vml/sub_write_anchor.t t/package/vml/sub_write_auto_fill.t t/package/vml/sub_write_column.t t/package/vml/sub_write_div.t t/package/vml/sub_write_fill.t t/package/vml/sub_write_idmap.t t/package/vml/sub_write_move_with_cells.t t/package/vml/sub_write_path.t t/package/vml/sub_write_row.t t/package/vml/sub_write_shadow.t t/package/vml/sub_write_shapelayout.t t/package/vml/sub_write_shapetype.t t/package/vml/sub_write_size_with_cells.t t/package/vml/sub_write_stroke.t t/package/vml/sub_write_textbox.t t/package/vml/vml_01.t t/package/vml/vml_02.t t/package/xml_writer/sub_write_xml_declaration.t t/regression/array_formula01.t t/regression/array_formula02.t t/regression/autofilter00.t t/regression/autofilter01.t t/regression/autofilter02.t t/regression/autofilter03.t t/regression/autofilter04.t t/regression/autofilter05.t t/regression/autofilter06.t t/regression/autofilter07.t t/regression/button01.t t/regression/button02.t t/regression/button03.t t/regression/button04.t t/regression/button05.t t/regression/button06.t t/regression/button07.t t/regression/button08.t t/regression/button09.t t/regression/button10.t t/regression/button11.t t/regression/button12.t t/regression/chart_area01.t t/regression/chart_area02.t t/regression/chart_area03.t t/regression/chart_area04.t t/regression/chart_axis01.t t/regression/chart_axis02.t t/regression/chart_axis03.t t/regression/chart_axis04.t t/regression/chart_axis05.t t/regression/chart_axis06.t t/regression/chart_axis07.t t/regression/chart_axis08.t t/regression/chart_axis09.t t/regression/chart_axis10.t t/regression/chart_axis11.t t/regression/chart_axis12.t t/regression/chart_axis13.t t/regression/chart_axis14.t t/regression/chart_axis15.t t/regression/chart_axis16.t t/regression/chart_axis17.t t/regression/chart_axis18.t t/regression/chart_axis19.t t/regression/chart_axis20.t t/regression/chart_axis21.t t/regression/chart_axis22.t t/regression/chart_axis23.t t/regression/chart_axis24.t t/regression/chart_axis25.t t/regression/chart_axis26.t t/regression/chart_axis27.t t/regression/chart_axis28.t t/regression/chart_axis29.t t/regression/chart_axis30.t t/regression/chart_axis31.t t/regression/chart_axis32.t t/regression/chart_axis33.t t/regression/chart_axis34.t t/regression/chart_bar01.t t/regression/chart_bar02.t t/regression/chart_bar03.t t/regression/chart_bar04.t t/regression/chart_bar05.t t/regression/chart_bar06.t t/regression/chart_bar07.t t/regression/chart_bar08.t t/regression/chart_bar09.t t/regression/chart_bar10.t t/regression/chart_bar11.t t/regression/chart_bar12.t t/regression/chart_bar13.t t/regression/chart_bar14.t t/regression/chart_bar15.t t/regression/chart_bar16.t t/regression/chart_bar17.t t/regression/chart_bar18.t t/regression/chart_bar19.t t/regression/chart_bar20.t t/regression/chart_bar21.t t/regression/chart_bar22.t t/regression/chart_bar23.t t/regression/chart_bar24.t t/regression/chart_blank01.t t/regression/chart_blank02.t t/regression/chart_blank03.t t/regression/chart_blank04.t t/regression/chart_blank05.t t/regression/chart_blank06.t t/regression/chart_chartarea01.t t/regression/chart_chartarea02.t t/regression/chart_chartarea03.t t/regression/chart_chartarea04.t t/regression/chart_chartarea05.t t/regression/chart_column01.t t/regression/chart_column02.t t/regression/chart_column03.t t/regression/chart_column04.t t/regression/chart_column05.t t/regression/chart_column06.t t/regression/chart_column07.t t/regression/chart_column08.t t/regression/chart_crossing01.t t/regression/chart_crossing02.t t/regression/chart_crossing03.t t/regression/chart_crossing04.t t/regression/chart_date01.t t/regression/chart_date02.t t/regression/chart_date03.t t/regression/chart_date04.t t/regression/chart_drop_lines01.t t/regression/chart_drop_lines02.t t/regression/chart_drop_lines03.t t/regression/chart_drop_lines04.t t/regression/chart_errorbars01.t t/regression/chart_errorbars02.t t/regression/chart_errorbars03.t t/regression/chart_errorbars04.t t/regression/chart_errorbars05.t t/regression/chart_errorbars06.t t/regression/chart_errorbars07.t t/regression/chart_errorbars08.t t/regression/chart_errorbars09.t t/regression/chart_errorbars10.t t/regression/chart_font01.t t/regression/chart_font02.t t/regression/chart_font03.t t/regression/chart_font04.t t/regression/chart_font05.t t/regression/chart_font06.t t/regression/chart_font07.t t/regression/chart_font08.t t/regression/chart_font09.t t/regression/chart_format01.t t/regression/chart_format02.t t/regression/chart_format03.t t/regression/chart_format04.t t/regression/chart_format05.t t/regression/chart_format06.t t/regression/chart_format07.t t/regression/chart_format08.t t/regression/chart_format09.t t/regression/chart_format10.t t/regression/chart_format11.t t/regression/chart_format12.t t/regression/chart_format13.t t/regression/chart_format14.t t/regression/chart_format15.t t/regression/chart_format16.t t/regression/chart_format17.t t/regression/chart_format18.t t/regression/chart_gap01.t t/regression/chart_gap02.t t/regression/chart_gap03.t t/regression/chart_gridlines01.t t/regression/chart_gridlines02.t t/regression/chart_gridlines03.t t/regression/chart_gridlines04.t t/regression/chart_gridlines05.t t/regression/chart_gridlines06.t t/regression/chart_gridlines07.t t/regression/chart_gridlines08.t t/regression/chart_gridlines09.t t/regression/chart_high_low_lines01.t t/regression/chart_high_low_lines02.t t/regression/chart_layout01.t t/regression/chart_layout02.t t/regression/chart_layout03.t t/regression/chart_layout04.t t/regression/chart_layout05.t t/regression/chart_layout06.t t/regression/chart_layout07.t t/regression/chart_layout08.t t/regression/chart_legend01.t t/regression/chart_legend02.t t/regression/chart_line01.t t/regression/chart_line02.t t/regression/chart_line03.t t/regression/chart_line04.t t/regression/chart_name01.t t/regression/chart_name02.t t/regression/chart_name03.t t/regression/chart_order01.t t/regression/chart_order02.t t/regression/chart_order03.t t/regression/chart_pie01.t t/regression/chart_pie02.t t/regression/chart_pie03.t t/regression/chart_pie04.t t/regression/chart_points01.t t/regression/chart_points02.t t/regression/chart_points03.t t/regression/chart_points04.t t/regression/chart_points05.t t/regression/chart_points06.t t/regression/chart_radar01.t t/regression/chart_radar02.t t/regression/chart_radar03.t t/regression/chart_scatter01.t t/regression/chart_scatter02.t t/regression/chart_scatter03.t t/regression/chart_scatter04.t t/regression/chart_scatter05.t t/regression/chart_scatter06.t t/regression/chart_scatter07.t t/regression/chart_scatter08.t t/regression/chart_scatter09.t t/regression/chart_scatter10.t t/regression/chart_scatter11.t t/regression/chart_scatter12.t t/regression/chart_scatter13.t t/regression/chart_scatter14.t t/regression/chart_size01.t t/regression/chart_size02.t t/regression/chart_size03.t t/regression/chart_sparse01.t t/regression/chart_stock01.t t/regression/chart_stock02.t t/regression/chart_str01.t t/regression/chart_str02.t t/regression/chart_table01.t t/regression/chart_table02.t t/regression/chart_title01.t t/regression/chart_title02.t t/regression/chart_up_down_bars01.t t/regression/chart_up_down_bars02.t t/regression/chart_up_down_bars03.t t/regression/chartsheet01.t t/regression/chartsheet02.t t/regression/chartsheet03.t t/regression/chartsheet04.t t/regression/chartsheet05.t t/regression/chartsheet06.t t/regression/chartsheet07.t t/regression/chartsheet08.t t/regression/chartsheet09.t t/regression/comment01.t t/regression/comment02.t t/regression/comment03.t t/regression/comment04.t t/regression/comment05.t t/regression/comment06.t t/regression/comment07.t t/regression/comment08.t t/regression/comment09.t t/regression/comment10.t t/regression/comment11.t t/regression/comment12.t t/regression/cond_format01.t t/regression/cond_format02.t t/regression/cond_format03.t t/regression/cond_format04.t t/regression/cond_format05.t t/regression/cond_format06.t t/regression/cond_format07.t t/regression/cond_format08.t t/regression/cond_format09.t t/regression/cond_format10.t t/regression/cond_format11.t t/regression/cond_format12.t t/regression/cond_format13.t t/regression/custom_colors01.t t/regression/date_1904_01.t t/regression/date_1904_02.t t/regression/date_examples01.t t/regression/default_row01.t t/regression/default_row02.t t/regression/default_row03.t t/regression/default_row04.t t/regression/defined_name01.t t/regression/defined_name02.t t/regression/defined_name03.t t/regression/defined_name04.t t/regression/escapes01.t t/regression/escapes02.t t/regression/escapes03.t t/regression/escapes04.t t/regression/escapes05.t t/regression/escapes06.t t/regression/escapes07.t t/regression/escapes08.t t/regression/filehandle01.t t/regression/firstsheet01.t t/regression/fit_to_page01.t t/regression/fit_to_page02.t t/regression/fit_to_page03.t t/regression/fit_to_page04.t t/regression/fit_to_page05.t t/regression/format01.t t/regression/format02.t t/regression/format03.t t/regression/format04.t t/regression/format05.t t/regression/gridlines01.t t/regression/hide01.t t/regression/hyperlink01.t t/regression/hyperlink02.t t/regression/hyperlink03.t t/regression/hyperlink04.t t/regression/hyperlink05.t t/regression/hyperlink06.t t/regression/hyperlink07.t t/regression/hyperlink08.t t/regression/hyperlink09.t t/regression/hyperlink10.t t/regression/hyperlink11.t t/regression/hyperlink12.t t/regression/hyperlink13.t t/regression/hyperlink14.t t/regression/hyperlink15.t t/regression/hyperlink16.t t/regression/hyperlink17.t t/regression/hyperlink18.t t/regression/hyperlink19.t t/regression/hyperlink20.t t/regression/image01.t t/regression/image02.t t/regression/image03.t t/regression/image04.t t/regression/image05.t t/regression/image06.t t/regression/image07.t t/regression/image08.t t/regression/image09.t t/regression/image10.t t/regression/image11.t t/regression/image12.t t/regression/image13.t t/regression/image14.t t/regression/image15.t t/regression/image16.t t/regression/image17.t t/regression/image18.t t/regression/image19.t t/regression/images/blue.jpg t/regression/images/blue.png t/regression/images/grey.jpg t/regression/images/grey.png t/regression/images/issue32.png t/regression/images/logo.png t/regression/images/mylogo.png t/regression/images/red.bmp t/regression/images/red.jpg t/regression/images/red.png t/regression/images/red_64x20.png t/regression/images/train.jpg t/regression/images/yellow.jpg t/regression/images/yellow.png t/regression/macro01.t t/regression/optimize01.t t/regression/optimize02.t t/regression/optimize03.t t/regression/optimize04.t t/regression/optimize05.t t/regression/optimize06.t t/regression/optimize07.t t/regression/optimize08.t t/regression/outline01.t t/regression/outline02.t t/regression/outline03.t t/regression/outline04.t t/regression/outline05.t t/regression/outline06.t t/regression/page_breaks01.t t/regression/page_breaks02.t t/regression/page_breaks03.t t/regression/page_breaks04.t t/regression/page_breaks05.t t/regression/page_breaks06.t t/regression/page_view01.t t/regression/panes01.t t/regression/print_across01.t t/regression/print_area01.t t/regression/print_area02.t t/regression/print_area03.t t/regression/print_area04.t t/regression/print_area05.t t/regression/print_area06.t t/regression/print_area07.t t/regression/print_options01.t t/regression/print_options02.t t/regression/print_options03.t t/regression/print_options04.t t/regression/print_options05.t t/regression/print_options06.t t/regression/print_scale01.t t/regression/print_scale02.t t/regression/properties01.t t/regression/protect01.t t/regression/protect02.t t/regression/protect03.t t/regression/repeat01.t t/regression/repeat02.t t/regression/repeat03.t t/regression/repeat04.t t/regression/repeat05.t t/regression/rich_string01.t t/regression/rich_string02.t t/regression/rich_string03.t t/regression/rich_string04.t t/regression/rich_string05.t t/regression/rich_string06.t t/regression/rich_string07.t t/regression/rich_string08.t t/regression/rich_string09.t t/regression/rich_string10.t t/regression/rich_string11.t t/regression/rich_string12.t t/regression/row_col_format01.t t/regression/row_col_format02.t t/regression/row_col_format03.t t/regression/row_col_format04.t t/regression/row_col_format05.t t/regression/row_col_format06.t t/regression/row_col_format07.t t/regression/row_col_format08.t t/regression/row_col_format09.t t/regression/row_col_format10.t t/regression/row_col_format11.t t/regression/row_col_format12.t t/regression/row_col_format13.t t/regression/row_col_format14.t t/regression/selection01.t t/regression/selection02.t t/regression/set_column01.t t/regression/set_column02.t t/regression/set_column03.t t/regression/set_column04.t t/regression/set_column05.t t/regression/set_column06.t t/regression/set_column07.t t/regression/set_column08.t t/regression/set_column09.t t/regression/set_print_scale01.t t/regression/set_start_page01.t t/regression/shape01.t t/regression/shape02.t t/regression/shape03.t t/regression/shape04.t t/regression/shape_connect01.t t/regression/shape_connect02.t t/regression/shape_connect03.t t/regression/shape_connect04.t t/regression/shape_scale01.t t/regression/shape_stencil01.t t/regression/shared_strings01.t t/regression/shared_strings02.t t/regression/simple01.t t/regression/simple02.t t/regression/simple03.t t/regression/simple04.t t/regression/simple05.t t/regression/tab_color01.t t/regression/table01.t t/regression/table02.t t/regression/table03.t t/regression/table04.t t/regression/table05.t t/regression/table06.t t/regression/table07.t t/regression/table08.t t/regression/table09.t t/regression/table10.t t/regression/table11.t t/regression/table12.t t/regression/table13.t t/regression/table14.t t/regression/table15.t t/regression/table16.t t/regression/taint01.t t/regression/taint02.t t/regression/tutorial01.t t/regression/tutorial02.t t/regression/tutorial03.t t/regression/utf8_01.t t/regression/utf8_02.t t/regression/utf8_03.t t/regression/utf8_04.t t/regression/utf8_05.t t/regression/utf8_06.t t/regression/utf8_07.t t/regression/utf8_08.t t/regression/utf8_09.t t/regression/utf8_10.t t/regression/vml01.t t/regression/vml02.t t/regression/vml03.t t/regression/vml04.t t/regression/xlsx_files/array_formula01.xlsx t/regression/xlsx_files/array_formula02.xlsx t/regression/xlsx_files/autofilter00.xlsx t/regression/xlsx_files/autofilter01.xlsx t/regression/xlsx_files/autofilter02.xlsx t/regression/xlsx_files/autofilter03.xlsx t/regression/xlsx_files/autofilter04.xlsx t/regression/xlsx_files/autofilter05.xlsx t/regression/xlsx_files/autofilter06.xlsx t/regression/xlsx_files/autofilter07.xlsx t/regression/xlsx_files/button01.xlsx t/regression/xlsx_files/button02.xlsx t/regression/xlsx_files/button03.xlsx t/regression/xlsx_files/button04.xlsx t/regression/xlsx_files/button05.xlsx t/regression/xlsx_files/button07.xlsm t/regression/xlsx_files/button08.xlsx t/regression/xlsx_files/button09.xlsx t/regression/xlsx_files/button10.xlsx t/regression/xlsx_files/button11.xlsx t/regression/xlsx_files/button12.xlsx t/regression/xlsx_files/chart_area01.xlsx t/regression/xlsx_files/chart_area02.xlsx t/regression/xlsx_files/chart_area03.xlsx t/regression/xlsx_files/chart_area04.xlsx t/regression/xlsx_files/chart_axis01.xlsx t/regression/xlsx_files/chart_axis02.xlsx t/regression/xlsx_files/chart_axis03.xlsx t/regression/xlsx_files/chart_axis04.xlsx t/regression/xlsx_files/chart_axis05.xlsx t/regression/xlsx_files/chart_axis06.xlsx t/regression/xlsx_files/chart_axis07.xlsx t/regression/xlsx_files/chart_axis08.xlsx t/regression/xlsx_files/chart_axis09.xlsx t/regression/xlsx_files/chart_axis10.xlsx t/regression/xlsx_files/chart_axis11.xlsx t/regression/xlsx_files/chart_axis12.xlsx t/regression/xlsx_files/chart_axis13.xlsx t/regression/xlsx_files/chart_axis14.xlsx t/regression/xlsx_files/chart_axis15.xlsx t/regression/xlsx_files/chart_axis16.xlsx t/regression/xlsx_files/chart_axis17.xlsx t/regression/xlsx_files/chart_axis18.xlsx t/regression/xlsx_files/chart_axis19.xlsx t/regression/xlsx_files/chart_axis20.xlsx t/regression/xlsx_files/chart_axis21.xlsx t/regression/xlsx_files/chart_axis22.xlsx t/regression/xlsx_files/chart_axis23.xlsx t/regression/xlsx_files/chart_axis24.xlsx t/regression/xlsx_files/chart_axis25.xlsx t/regression/xlsx_files/chart_axis26.xlsx t/regression/xlsx_files/chart_axis27.xlsx t/regression/xlsx_files/chart_axis28.xlsx t/regression/xlsx_files/chart_axis29.xlsx t/regression/xlsx_files/chart_axis30.xlsx t/regression/xlsx_files/chart_axis31.xlsx t/regression/xlsx_files/chart_axis32.xlsx t/regression/xlsx_files/chart_axis33.xlsx t/regression/xlsx_files/chart_axis34.xlsx t/regression/xlsx_files/chart_bar01.xlsx t/regression/xlsx_files/chart_bar02.xlsx t/regression/xlsx_files/chart_bar03.xlsx t/regression/xlsx_files/chart_bar04.xlsx t/regression/xlsx_files/chart_bar05.xlsx t/regression/xlsx_files/chart_bar06.xlsx t/regression/xlsx_files/chart_bar07.xlsx t/regression/xlsx_files/chart_bar08.xlsx t/regression/xlsx_files/chart_bar09.xlsx t/regression/xlsx_files/chart_bar10.xlsx t/regression/xlsx_files/chart_bar11.xlsx t/regression/xlsx_files/chart_bar12.xlsx t/regression/xlsx_files/chart_bar13.xlsx t/regression/xlsx_files/chart_bar14.xlsx t/regression/xlsx_files/chart_bar15.xlsx t/regression/xlsx_files/chart_bar16.xlsx t/regression/xlsx_files/chart_bar17.xlsx t/regression/xlsx_files/chart_bar18.xlsx t/regression/xlsx_files/chart_bar19.xlsx t/regression/xlsx_files/chart_bar20.xlsx t/regression/xlsx_files/chart_bar21.xlsx t/regression/xlsx_files/chart_bar22.xlsx t/regression/xlsx_files/chart_bar23.xlsx t/regression/xlsx_files/chart_bar24.xlsx t/regression/xlsx_files/chart_blank01.xlsx t/regression/xlsx_files/chart_blank02.xlsx t/regression/xlsx_files/chart_blank03.xlsx t/regression/xlsx_files/chart_blank04.xlsx t/regression/xlsx_files/chart_blank05.xlsx t/regression/xlsx_files/chart_blank06.xlsx t/regression/xlsx_files/chart_chartarea01.xlsx t/regression/xlsx_files/chart_chartarea03.xlsx t/regression/xlsx_files/chart_chartarea04.xlsx t/regression/xlsx_files/chart_chartarea05.xlsx t/regression/xlsx_files/chart_column01.xlsx t/regression/xlsx_files/chart_column02.xlsx t/regression/xlsx_files/chart_column03.xlsx t/regression/xlsx_files/chart_column04.xlsx t/regression/xlsx_files/chart_column05.xlsx t/regression/xlsx_files/chart_column06.xlsx t/regression/xlsx_files/chart_column07.xlsx t/regression/xlsx_files/chart_column08.xlsx t/regression/xlsx_files/chart_crossing01.xlsx t/regression/xlsx_files/chart_crossing02.xlsx t/regression/xlsx_files/chart_crossing03.xlsx t/regression/xlsx_files/chart_crossing04.xlsx t/regression/xlsx_files/chart_date01.xlsx t/regression/xlsx_files/chart_date02.xlsx t/regression/xlsx_files/chart_date03.xlsx t/regression/xlsx_files/chart_date04.xlsx t/regression/xlsx_files/chart_drop_lines01.xlsx t/regression/xlsx_files/chart_drop_lines02.xlsx t/regression/xlsx_files/chart_drop_lines03.xlsx t/regression/xlsx_files/chart_drop_lines04.xlsx t/regression/xlsx_files/chart_errorbars01.xlsx t/regression/xlsx_files/chart_errorbars02.xlsx t/regression/xlsx_files/chart_errorbars03.xlsx t/regression/xlsx_files/chart_errorbars04.xlsx t/regression/xlsx_files/chart_errorbars05.xlsx t/regression/xlsx_files/chart_errorbars06.xlsx t/regression/xlsx_files/chart_errorbars07.xlsx t/regression/xlsx_files/chart_errorbars08.xlsx t/regression/xlsx_files/chart_errorbars09.xlsx t/regression/xlsx_files/chart_errorbars10.xlsx t/regression/xlsx_files/chart_font01.xlsx t/regression/xlsx_files/chart_font02.xlsx t/regression/xlsx_files/chart_font03.xlsx t/regression/xlsx_files/chart_font04.xlsx t/regression/xlsx_files/chart_font05.xlsx t/regression/xlsx_files/chart_font06.xlsx t/regression/xlsx_files/chart_font07.xlsx t/regression/xlsx_files/chart_font08.xlsx t/regression/xlsx_files/chart_font09.xlsx t/regression/xlsx_files/chart_format01.xlsx t/regression/xlsx_files/chart_format02.xlsx t/regression/xlsx_files/chart_format03.xlsx t/regression/xlsx_files/chart_format04.xlsx t/regression/xlsx_files/chart_format05.xlsx t/regression/xlsx_files/chart_format06.xlsx t/regression/xlsx_files/chart_format07.xlsx t/regression/xlsx_files/chart_format08.xlsx t/regression/xlsx_files/chart_format09.xlsx t/regression/xlsx_files/chart_format10.xlsx t/regression/xlsx_files/chart_format11.xlsx t/regression/xlsx_files/chart_format12.xlsx t/regression/xlsx_files/chart_format13.xlsx t/regression/xlsx_files/chart_format14.xlsx t/regression/xlsx_files/chart_format15.xlsx t/regression/xlsx_files/chart_format16.xlsx t/regression/xlsx_files/chart_format17.xlsx t/regression/xlsx_files/chart_format18.xlsx t/regression/xlsx_files/chart_gap01.xlsx t/regression/xlsx_files/chart_gap02.xlsx t/regression/xlsx_files/chart_gap03.xlsx t/regression/xlsx_files/chart_gridlines01.xlsx t/regression/xlsx_files/chart_gridlines02.xlsx t/regression/xlsx_files/chart_gridlines03.xlsx t/regression/xlsx_files/chart_gridlines04.xlsx t/regression/xlsx_files/chart_gridlines05.xlsx t/regression/xlsx_files/chart_gridlines06.xlsx t/regression/xlsx_files/chart_gridlines07.xlsx t/regression/xlsx_files/chart_gridlines08.xlsx t/regression/xlsx_files/chart_gridlines09.xlsx t/regression/xlsx_files/chart_high_low_lines01.xlsx t/regression/xlsx_files/chart_high_low_lines02.xlsx t/regression/xlsx_files/chart_layout01.xlsx t/regression/xlsx_files/chart_layout02.xlsx t/regression/xlsx_files/chart_layout03.xlsx t/regression/xlsx_files/chart_layout04.xlsx t/regression/xlsx_files/chart_layout05.xlsx t/regression/xlsx_files/chart_layout06.xlsx t/regression/xlsx_files/chart_layout07.xlsx t/regression/xlsx_files/chart_layout08.xlsx t/regression/xlsx_files/chart_legend01.xlsx t/regression/xlsx_files/chart_line01.xlsx t/regression/xlsx_files/chart_line02.xlsx t/regression/xlsx_files/chart_line03.xlsx t/regression/xlsx_files/chart_line04.xlsx t/regression/xlsx_files/chart_name01.xlsx t/regression/xlsx_files/chart_name02.xlsx t/regression/xlsx_files/chart_name03.xlsx t/regression/xlsx_files/chart_order01.xlsx t/regression/xlsx_files/chart_order03.xlsx t/regression/xlsx_files/chart_pie01.xlsx t/regression/xlsx_files/chart_pie02.xlsx t/regression/xlsx_files/chart_pie03.xlsx t/regression/xlsx_files/chart_pie04.xlsx t/regression/xlsx_files/chart_points01.xlsx t/regression/xlsx_files/chart_points02.xlsx t/regression/xlsx_files/chart_points03.xlsx t/regression/xlsx_files/chart_points04.xlsx t/regression/xlsx_files/chart_points05.xlsx t/regression/xlsx_files/chart_points06.xlsx t/regression/xlsx_files/chart_radar01.xlsx t/regression/xlsx_files/chart_radar02.xlsx t/regression/xlsx_files/chart_radar03.xlsx t/regression/xlsx_files/chart_scatter01.xlsx t/regression/xlsx_files/chart_scatter02.xlsx t/regression/xlsx_files/chart_scatter03.xlsx t/regression/xlsx_files/chart_scatter04.xlsx t/regression/xlsx_files/chart_scatter05.xlsx t/regression/xlsx_files/chart_scatter06.xlsx t/regression/xlsx_files/chart_scatter07.xlsx t/regression/xlsx_files/chart_scatter08.xlsx t/regression/xlsx_files/chart_scatter09.xlsx t/regression/xlsx_files/chart_scatter10.xlsx t/regression/xlsx_files/chart_scatter11.xlsx t/regression/xlsx_files/chart_scatter12.xlsx t/regression/xlsx_files/chart_scatter14.xlsx t/regression/xlsx_files/chart_size01.xlsx t/regression/xlsx_files/chart_sparse01.xlsx t/regression/xlsx_files/chart_stock01.xlsx t/regression/xlsx_files/chart_stock02.xlsx t/regression/xlsx_files/chart_str01.xlsx t/regression/xlsx_files/chart_str02.xlsx t/regression/xlsx_files/chart_table01.xlsx t/regression/xlsx_files/chart_table02.xlsx t/regression/xlsx_files/chart_title01.xlsx t/regression/xlsx_files/chart_title02.xlsx t/regression/xlsx_files/chart_up_down_bars01.xlsx t/regression/xlsx_files/chart_up_down_bars02.xlsx t/regression/xlsx_files/chart_up_down_bars03.xlsx t/regression/xlsx_files/chartsheet01.xlsx t/regression/xlsx_files/chartsheet02.xlsx t/regression/xlsx_files/chartsheet03.xlsx t/regression/xlsx_files/chartsheet04.xlsx t/regression/xlsx_files/chartsheet05.xlsx t/regression/xlsx_files/chartsheet06.xlsx t/regression/xlsx_files/chartsheet07.xlsx t/regression/xlsx_files/chartsheet08.xlsx t/regression/xlsx_files/chartsheet09.xlsx t/regression/xlsx_files/comment01.xlsx t/regression/xlsx_files/comment02.xlsx t/regression/xlsx_files/comment03.xlsx t/regression/xlsx_files/comment04.xlsx t/regression/xlsx_files/comment05.xlsx t/regression/xlsx_files/comment06.xlsx t/regression/xlsx_files/comment07.xlsx t/regression/xlsx_files/comment08.xlsx t/regression/xlsx_files/comment09.xlsx t/regression/xlsx_files/comment10.xlsx t/regression/xlsx_files/comment11.xlsx t/regression/xlsx_files/comment12.xlsx t/regression/xlsx_files/cond_format01.xlsx t/regression/xlsx_files/cond_format02.xlsx t/regression/xlsx_files/cond_format03.xlsx t/regression/xlsx_files/cond_format04.xlsx t/regression/xlsx_files/cond_format05.xlsx t/regression/xlsx_files/cond_format06.xlsx t/regression/xlsx_files/cond_format07.xlsx t/regression/xlsx_files/cond_format08.xlsx t/regression/xlsx_files/cond_format10.xlsx t/regression/xlsx_files/cond_format11.xlsx t/regression/xlsx_files/cond_format12.xlsx t/regression/xlsx_files/cond_format13.xlsx t/regression/xlsx_files/custom_colors01.xlsx t/regression/xlsx_files/date_1904_01.xlsx t/regression/xlsx_files/date_1904_02.xlsx t/regression/xlsx_files/date_examples01.xlsx t/regression/xlsx_files/default_row01.xlsx t/regression/xlsx_files/default_row02.xlsx t/regression/xlsx_files/default_row03.xlsx t/regression/xlsx_files/default_row04.xlsx t/regression/xlsx_files/defined_name01.xlsx t/regression/xlsx_files/defined_name02.xlsx t/regression/xlsx_files/defined_name03.xlsx t/regression/xlsx_files/defined_name04.xlsx t/regression/xlsx_files/escapes01.xlsx t/regression/xlsx_files/escapes02.xlsx t/regression/xlsx_files/escapes03.xlsx t/regression/xlsx_files/escapes04.xlsx t/regression/xlsx_files/escapes05.xlsx t/regression/xlsx_files/escapes06.xlsx t/regression/xlsx_files/escapes07.xlsx t/regression/xlsx_files/escapes08.xlsx t/regression/xlsx_files/filehandle01.xlsx t/regression/xlsx_files/firstsheet01.xlsx t/regression/xlsx_files/fit_to_pages01.xlsx t/regression/xlsx_files/fit_to_pages02.xlsx t/regression/xlsx_files/fit_to_pages03.xlsx t/regression/xlsx_files/fit_to_pages04.xlsx t/regression/xlsx_files/fit_to_pages05.xlsx t/regression/xlsx_files/format01.xlsx t/regression/xlsx_files/format02.xlsx t/regression/xlsx_files/format03.xlsx t/regression/xlsx_files/format04.xlsx t/regression/xlsx_files/format05.xlsx t/regression/xlsx_files/gridlines01.xlsx t/regression/xlsx_files/hide01.xlsx t/regression/xlsx_files/hyperlink01.xlsx t/regression/xlsx_files/hyperlink02.xlsx t/regression/xlsx_files/hyperlink03.xlsx t/regression/xlsx_files/hyperlink04.xlsx t/regression/xlsx_files/hyperlink05.xlsx t/regression/xlsx_files/hyperlink06.xlsx t/regression/xlsx_files/hyperlink07.xlsx t/regression/xlsx_files/hyperlink08.xlsx t/regression/xlsx_files/hyperlink09.xlsx t/regression/xlsx_files/hyperlink10.xlsx t/regression/xlsx_files/hyperlink11.xlsx t/regression/xlsx_files/hyperlink12.xlsx t/regression/xlsx_files/hyperlink13.xlsx t/regression/xlsx_files/hyperlink14.xlsx t/regression/xlsx_files/hyperlink15.xlsx t/regression/xlsx_files/hyperlink16.xlsx t/regression/xlsx_files/hyperlink17.xlsx t/regression/xlsx_files/hyperlink18.xlsx t/regression/xlsx_files/hyperlink19.xlsx t/regression/xlsx_files/hyperlink20.xlsx t/regression/xlsx_files/image01.xlsx t/regression/xlsx_files/image02.xlsx t/regression/xlsx_files/image03.xlsx t/regression/xlsx_files/image04.xlsx t/regression/xlsx_files/image05.xlsx t/regression/xlsx_files/image06.xlsx t/regression/xlsx_files/image07.xlsx t/regression/xlsx_files/image08.xlsx t/regression/xlsx_files/image09.xlsx t/regression/xlsx_files/image10.xlsx t/regression/xlsx_files/image11.xlsx t/regression/xlsx_files/image12.xlsx t/regression/xlsx_files/image13.xlsx t/regression/xlsx_files/image14.xlsx t/regression/xlsx_files/image15.xlsx t/regression/xlsx_files/image16.xlsx t/regression/xlsx_files/image17.xlsx t/regression/xlsx_files/image18.xlsx t/regression/xlsx_files/image19.xlsx t/regression/xlsx_files/macro01.xlsm t/regression/xlsx_files/optimize01.xlsx t/regression/xlsx_files/optimize02.xlsx t/regression/xlsx_files/optimize03.xlsx t/regression/xlsx_files/optimize04.xlsx t/regression/xlsx_files/optimize05.xlsx t/regression/xlsx_files/optimize06.xlsx t/regression/xlsx_files/optimize07.xlsx t/regression/xlsx_files/optimize08.xlsx t/regression/xlsx_files/outline01.xlsx t/regression/xlsx_files/outline02.xlsx t/regression/xlsx_files/outline03.xlsx t/regression/xlsx_files/outline04.xlsx t/regression/xlsx_files/outline05.xlsx t/regression/xlsx_files/outline06.xlsx t/regression/xlsx_files/page_breaks01.xlsx t/regression/xlsx_files/page_breaks02.xlsx t/regression/xlsx_files/page_breaks03.xlsx t/regression/xlsx_files/page_breaks04.xlsx t/regression/xlsx_files/page_breaks05.xlsx t/regression/xlsx_files/page_breaks06.xlsx t/regression/xlsx_files/page_view01.xlsx t/regression/xlsx_files/panes01.xlsx t/regression/xlsx_files/print_across01.xlsx t/regression/xlsx_files/print_area01.xlsx t/regression/xlsx_files/print_area02.xlsx t/regression/xlsx_files/print_area03.xlsx t/regression/xlsx_files/print_area04.xlsx t/regression/xlsx_files/print_area05.xlsx t/regression/xlsx_files/print_area06.xlsx t/regression/xlsx_files/print_area07.xlsx t/regression/xlsx_files/print_options01.xlsx t/regression/xlsx_files/print_options02.xlsx t/regression/xlsx_files/print_options03.xlsx t/regression/xlsx_files/print_options04.xlsx t/regression/xlsx_files/print_options05.xlsx t/regression/xlsx_files/print_options06.xlsx t/regression/xlsx_files/print_scale01.xlsx t/regression/xlsx_files/print_scale02.xlsx t/regression/xlsx_files/properties01.xlsx t/regression/xlsx_files/protect01.xlsx t/regression/xlsx_files/protect02.xlsx t/regression/xlsx_files/protect03.xlsx t/regression/xlsx_files/repeat01.xlsx t/regression/xlsx_files/repeat02.xlsx t/regression/xlsx_files/repeat03.xlsx t/regression/xlsx_files/repeat04.xlsx t/regression/xlsx_files/repeat05.xlsx t/regression/xlsx_files/rich_string01.xlsx t/regression/xlsx_files/rich_string02.xlsx t/regression/xlsx_files/rich_string03.xlsx t/regression/xlsx_files/rich_string04.xlsx t/regression/xlsx_files/rich_string05.xlsx t/regression/xlsx_files/rich_string06.xlsx t/regression/xlsx_files/rich_string07.xlsx t/regression/xlsx_files/rich_string08.xlsx t/regression/xlsx_files/rich_string09.xlsx t/regression/xlsx_files/rich_string10.xlsx t/regression/xlsx_files/rich_string11.xlsx t/regression/xlsx_files/rich_string12.xlsx t/regression/xlsx_files/row_col_format01.xlsx t/regression/xlsx_files/row_col_format02.xlsx t/regression/xlsx_files/row_col_format03.xlsx t/regression/xlsx_files/row_col_format04.xlsx t/regression/xlsx_files/row_col_format05.xlsx t/regression/xlsx_files/row_col_format06.xlsx t/regression/xlsx_files/row_col_format07.xlsx t/regression/xlsx_files/row_col_format08.xlsx t/regression/xlsx_files/row_col_format09.xlsx t/regression/xlsx_files/row_col_format10.xlsx t/regression/xlsx_files/row_col_format11.xlsx t/regression/xlsx_files/row_col_format12.xlsx t/regression/xlsx_files/row_col_format13.xlsx t/regression/xlsx_files/row_col_format14.xlsx t/regression/xlsx_files/selection01.xlsx t/regression/xlsx_files/selection02.xlsx t/regression/xlsx_files/set_column01.xlsx t/regression/xlsx_files/set_column03.xlsx t/regression/xlsx_files/set_column04.xlsx t/regression/xlsx_files/set_column05.xlsx t/regression/xlsx_files/set_column06.xlsx t/regression/xlsx_files/set_column07.xlsx t/regression/xlsx_files/set_column08.xlsx t/regression/xlsx_files/set_column09.xlsx t/regression/xlsx_files/set_print_scale01.xlsx t/regression/xlsx_files/set_start_page01.xlsx t/regression/xlsx_files/shape01.xlsx t/regression/xlsx_files/shape02.xlsx t/regression/xlsx_files/shape03.xlsx t/regression/xlsx_files/shape04.xlsx t/regression/xlsx_files/shape_connect01.xlsx t/regression/xlsx_files/shape_connect02.xlsx t/regression/xlsx_files/shape_connect03.xlsx t/regression/xlsx_files/shape_connect04.xlsx t/regression/xlsx_files/shape_scale01.xlsx t/regression/xlsx_files/shape_stencil01.xlsx t/regression/xlsx_files/shared_strings01.xlsx t/regression/xlsx_files/shared_strings02.xlsx t/regression/xlsx_files/simple01.xlsx t/regression/xlsx_files/simple02.xlsx t/regression/xlsx_files/simple03.xlsx t/regression/xlsx_files/simple04.xlsx t/regression/xlsx_files/simple05.xlsx t/regression/xlsx_files/tab_color01.xlsx t/regression/xlsx_files/table01.xlsx t/regression/xlsx_files/table02.xlsx t/regression/xlsx_files/table03.xlsx t/regression/xlsx_files/table04.xlsx t/regression/xlsx_files/table05.xlsx t/regression/xlsx_files/table06.xlsx t/regression/xlsx_files/table07.xlsx t/regression/xlsx_files/table08.xlsx t/regression/xlsx_files/table09.xlsx t/regression/xlsx_files/table10.xlsx t/regression/xlsx_files/table11.xlsx t/regression/xlsx_files/table12.xlsx t/regression/xlsx_files/table13.xlsx t/regression/xlsx_files/table14.xlsx t/regression/xlsx_files/table15.xlsx t/regression/xlsx_files/taint01.xlsx t/regression/xlsx_files/taint02.xlsx t/regression/xlsx_files/tutorial01.xlsx t/regression/xlsx_files/tutorial02.xlsx t/regression/xlsx_files/tutorial03.xlsx t/regression/xlsx_files/utf8_01.xlsx t/regression/xlsx_files/utf8_02.xlsx t/regression/xlsx_files/utf8_03.xlsx t/regression/xlsx_files/utf8_04.xlsx t/regression/xlsx_files/utf8_05.xlsx t/regression/xlsx_files/utf8_06.xlsx t/regression/xlsx_files/utf8_07.xlsx t/regression/xlsx_files/utf8_08.xlsx t/regression/xlsx_files/utf8_09.xlsx t/regression/xlsx_files/utf8_10.xlsx t/regression/xlsx_files/vbaProject01.bin t/regression/xlsx_files/vbaProject02.bin t/regression/xlsx_files/vml01.xlsx t/regression/xlsx_files/vml02.xlsx t/regression/xlsx_files/vml03.xlsx t/regression/xlsx_files/vml04.xlsx t/utility/xl_cell_to_rowcol.t t/utility/xl_col_to_name.t t/utility/xl_date_1904.t t/utility/xl_date_list.t t/utility/xl_dec_col.t t/utility/xl_dec_row.t t/utility/xl_decode_date_EU.t t/utility/xl_decode_date_US.t t/utility/xl_inc_col.t t/utility/xl_inc_row.t t/utility/xl_parse_date.t t/utility/xl_parse_time.t t/utility/xl_range.t t/utility/xl_range_formula.t t/utility/xl_rowcol_to_cell.t t/workbook/sub_close.t t/workbook/sub_get_chart_range.t t/workbook/sub_sort_defined_names.t t/workbook/sub_write_book_views.t t/workbook/sub_write_calc_pr.t t/workbook/sub_write_defined_name.t t/workbook/sub_write_defined_names.t t/workbook/sub_write_ext.t t/workbook/sub_write_ext_lst.t t/workbook/sub_write_file_version.t t/workbook/sub_write_mx_arch_id.t t/workbook/sub_write_sheet.t t/workbook/sub_write_sheets.t t/workbook/sub_write_workbook.t t/workbook/sub_write_workbook_pr.t t/workbook/sub_write_workbook_view.t t/workbook/sub_write_xml_declaration.t t/workbook/workbook_01.t t/workbook/workbook_02.t t/workbook/workbook_03.t t/worksheet/sparkline_01.t t/worksheet/sparkline_02.t t/worksheet/sparkline_03.t t/worksheet/sparkline_04.t t/worksheet/sparkline_05.t t/worksheet/sparkline_06.t t/worksheet/sparkline_07.t t/worksheet/sparkline_08.t t/worksheet/sparkline_09.t t/worksheet/sparkline_10.t t/worksheet/sparkline_11.t t/worksheet/sub_calculate_spans.t t/worksheet/sub_convert_date_time_01.t t/worksheet/sub_convert_date_time_02.t t/worksheet/sub_convert_date_time_03.t t/worksheet/sub_extract_filter_tokens.t t/worksheet/sub_parse_filter_expression.t t/worksheet/sub_position_object.t t/worksheet/sub_repeat_formula.t t/worksheet/sub_write_auto_filter.t t/worksheet/sub_write_brk.t t/worksheet/sub_write_cell.t t/worksheet/sub_write_cell_value.t t/worksheet/sub_write_col_breaks.t t/worksheet/sub_write_col_info.t t/worksheet/sub_write_conditional_formatting.t t/worksheet/sub_write_custom_filter.t t/worksheet/sub_write_custom_filters.t t/worksheet/sub_write_data_validations_01.t t/worksheet/sub_write_data_validations_02.t t/worksheet/sub_write_dimension.t t/worksheet/sub_write_filter.t t/worksheet/sub_write_filter_column.t t/worksheet/sub_write_filters.t t/worksheet/sub_write_header_footer.t t/worksheet/sub_write_hyperlink.t t/worksheet/sub_write_legacy_drawing.t t/worksheet/sub_write_merge_cell.t t/worksheet/sub_write_merge_cells.t t/worksheet/sub_write_page_margins.t t/worksheet/sub_write_page_set_up_pr.t t/worksheet/sub_write_page_setup.t t/worksheet/sub_write_pane.t t/worksheet/sub_write_phonetic_pr.t t/worksheet/sub_write_print_options.t t/worksheet/sub_write_row.t t/worksheet/sub_write_row_breaks.t t/worksheet/sub_write_selection.t t/worksheet/sub_write_sheet_calc_pr.t t/worksheet/sub_write_sheet_data.t t/worksheet/sub_write_sheet_format_pr.t t/worksheet/sub_write_sheet_pr.t t/worksheet/sub_write_sheet_protection.t t/worksheet/sub_write_sheet_view.t t/worksheet/sub_write_sheet_views1.t t/worksheet/sub_write_sheet_views2.t t/worksheet/sub_write_sheet_views3.t t/worksheet/sub_write_sheet_views4.t t/worksheet/sub_write_sheet_views5.t t/worksheet/sub_write_sheet_views6.t t/worksheet/sub_write_sheet_views7.t t/worksheet/sub_write_sheet_views8.t t/worksheet/sub_write_sheet_views9.t t/worksheet/sub_write_tab_color.t t/worksheet/sub_write_worksheet.t t/worksheet/sub_write_xml_declaration.t t/worksheet/worksheet_01.t t/worksheet/worksheet_02.t t/worksheet/worksheet_03.t t/worksheet/worksheet_04.t t/worksheet/worksheet_array_formula_01.t t/worksheet/worksheet_cond_format_01.t t/worksheet/worksheet_cond_format_02.t t/worksheet/worksheet_cond_format_03.t t/worksheet/worksheet_cond_format_04.t t/worksheet/worksheet_cond_format_05.t t/worksheet/worksheet_cond_format_06.t t/worksheet/worksheet_cond_format_07.t t/worksheet/worksheet_cond_format_08.t t/worksheet/worksheet_cond_format_09.t t/worksheet/worksheet_cond_format_10.t t/worksheet/worksheet_cond_format_11.t t/worksheet/worksheet_cond_format_12.t t/worksheet/worksheet_cond_format_13.t t/worksheet/worksheet_cond_format_14.t t/worksheet/worksheet_cond_format_15.t t/worksheet/worksheet_cond_format_16.t t/worksheet/worksheet_cond_format_17.t t/worksheet/worksheet_cond_format_18.t t/worksheet/worksheet_cond_format_19.t t/worksheet/worksheet_cond_format_20.t t/worksheet/worksheet_merge_cells_01.t t/worksheet/worksheet_merge_cells_02.t t/worksheet/worksheet_merge_cells_03.t META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) Excel-Writer-XLSX-0.76/META.json000644 000765 000024 00000002503 12260573500 016236 0ustar00Johnstaff000000 000000 { "abstract" : "Create a new file in the Excel 2007+ XLSX format.", "author" : [ "John McNamara (jmcnamara@cpan.org)" ], "dynamic_config" : 1, "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Excel-Writer-XLSX", "no_index" : { "directory" : [ "t", "inc" ] }, "prereqs" : { "build" : { "requires" : { "ExtUtils::MakeMaker" : 0 } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : 0 } }, "runtime" : { "requires" : { "Archive::Zip" : "1.3", "File::Temp" : "0.19", "IO::File" : "1.14" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "http://github.com/jmcnamara/excel-writer-xlsx/issues" }, "homepage" : "http://jmcnamara.github.com/excel-writer-xlsx/", "repository" : { "url" : "http://github.com/jmcnamara/excel-writer-xlsx" }, "x_MailingList" : "http://groups.google.com/group/spreadsheet-writeexcel" }, "version" : "0.76" } Excel-Writer-XLSX-0.76/META.yml000644 000765 000024 00000001470 12260573500 016070 0ustar00Johnstaff000000 000000 --- abstract: 'Create a new file in the Excel 2007+ XLSX format.' author: - 'John McNamara (jmcnamara@cpan.org)' build_requires: ExtUtils::MakeMaker: 0 configure_requires: ExtUtils::MakeMaker: 0 dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Excel-Writer-XLSX no_index: directory: - t - inc requires: Archive::Zip: 1.3 File::Temp: 0.19 IO::File: 1.14 resources: bugtracker: http://github.com/jmcnamara/excel-writer-xlsx/issues homepage: http://jmcnamara.github.com/excel-writer-xlsx/ repository: http://github.com/jmcnamara/excel-writer-xlsx x_MailingList: http://groups.google.com/group/spreadsheet-writeexcel version: 0.76 Excel-Writer-XLSX-0.76/README000644 000765 000024 00000004151 12260572702 015501 0ustar00Johnstaff000000 000000 NAME Excel::Writer::XLSX - Create a new file in the Excel 2007+ XLSX format. DESCRIPTION The Excel::Writer::XLSX module can be used to create a new Excel file in the 2007+ XLSX format. The module supports the following Excel features: * Multiple worksheets * Strings and numbers * Unicode text * Cell formatting * Formulas * Images * Charts * Autofilters * Data validation * Conditional formatting * Macros * Tables * Shapes * Sparklines * Hyperlinks * Rich string formats * Defined names * Grouping/Outlines * Cell comments * Panes * Page set-up and printing options Excel::Writer::XLSX uses the same interface as Spreadsheet::WriteExcel. SYNOPSIS To write a string, a formatted string, a number and a formula to the first worksheet in an Excel XML spreadsheet called perl.xls: use Excel::Writer::XLSX; # Create a new Excel workbook my $workbook = Excel::Writer::XLSX->new('perl.xlsx'); # Add a worksheet $worksheet = $workbook->add_worksheet(); # Add and define a format $format = $workbook->add_format(); # Add a format $format->set_bold(); $format->set_color('red'); $format->set_align('center'); # Write a formatted and unformatted string, row and column notation. $col = $row = 0; $worksheet->write($row, $col, "Hi Excel!", $format); $worksheet->write(1, $col, "Hi Excel!"); # Write a number and a formula using A1 notation $worksheet->write('A3', 1.2345); $worksheet->write('A4', '=SIN(PI()/4)'); INSTALLATION Use the standard Unix style installation. Unzip and untar the module as follows: tar -zxvf Excel-Writer-XLSX-0.76.tar.gz The module can be installed using the standard Perl procedure: perl Makefile.PL make make test make install # As sudo/root AUTHOR John McNamara (jmcnamara@cpan.org) Excel-Writer-XLSX-0.76/t/000755 000765 000024 00000000000 12260573477 015075 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/chart/000755 000765 000024 00000000000 12260573500 016161 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/chartsheet/000755 000765 000024 00000000000 12260573477 017227 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/drawing/000755 000765 000024 00000000000 12260573500 016513 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/lib/000755 000765 000024 00000000000 12260573477 015643 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/package/000755 000765 000024 00000000000 12260573474 016465 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/regression/000755 000765 000024 00000000000 12260573500 017240 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/utility/000755 000765 000024 00000000000 12260573500 016563 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/workbook/000755 000765 000024 00000000000 12260573477 016732 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/worksheet/000755 000765 000024 00000000000 12260573500 017073 5ustar00Johnstaff000000 000000 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_01.t000644 000765 000024 00000004063 12241403706 021552 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); # Set up sparklines # No sparkline in the first testcase. # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_02.t000644 000765 000024 00000006102 12241403706 021547 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'Sheet1!A1:E1', } ); # End sparkline $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_03.t000644 000765 000024 00000010406 12241403706 021552 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Excel::Writer::XLSX::Utility ':rowcol'; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); $worksheet->write('A2', $data); # Set up sparklines $worksheet->add_sparkline( { location => xl_rowcol_to_cell( 0, 5 ), range => xl_range_formula( 'Sheet1', 0, 0, 0, 4 ), } ); $worksheet->add_sparkline( { location => 'F2', range => xl_range( 1, 1, 0, 4 ), } ); # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 Sheet1!A2:E2 F2 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_04.t000644 000765 000024 00000006157 12241403706 021563 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'Sheet1!A1:E1', type => 'column', } ); # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_05.t000644 000765 000024 00000006165 12241403706 021563 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); # Set up sparklines $worksheet->add_sparkline( { location => ['$F$1'], range => ['$A$1:$E$1'], type => 'win_loss', } ); # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_06.t000644 000765 000024 00000007035 12241403706 021561 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); $worksheet->write('A2', $data); # Set up sparklines $worksheet->add_sparkline( { location => [ 'F1', 'F2' ], range => [ 'A1:E1', 'A2:E2' ], } ); # End sparkline $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 Sheet1!A1:E1 F1 Sheet1!A2:E2 F2 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_07.t000644 000765 000024 00000024574 12241403706 021571 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); $worksheet->write('A2', $data); $worksheet->write('A3', $data); $worksheet->write('A4', $data); $worksheet->write('A5', $data); $worksheet->write('A6', $data); $worksheet->write('A7', $data); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'A1:E1', type => 'column', high_point => 1, } ); $worksheet->add_sparkline( { location => 'F2', range => 'A2:E2', type => 'column', low_point => 1, } ); $worksheet->add_sparkline( { location => 'F3', range => 'A3:E3', type => 'column', negative_points => 1, } ); $worksheet->add_sparkline( { location => 'F4', range => 'A4:E4', type => 'column', first_point => 1, } ); $worksheet->add_sparkline( { location => 'F5', range => 'A5:E5', type => 'column', last_point => 1, } ); $worksheet->add_sparkline( { location => 'F6', range => 'A6:E6', type => 'column', markers => 1, } ); $worksheet->add_sparkline( { location => 'F7', range => 'A7:E7', type => 'column', high_point => 1, low_point => 1, negative_points => 1, first_point => 1, last_point => 1, markers => 1, } ); # End sparkline $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 Sheet1!A7:E7 F7 Sheet1!A6:E6 F6 Sheet1!A5:E5 F5 Sheet1!A4:E4 F4 Sheet1!A3:E3 F3 Sheet1!A2:E2 F2 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_08.t000644 000765 000024 00000012550 12241403706 021561 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->{_palette}->[2] = [ 0xff, 0x00, 0x00, 0x00 ]; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); $worksheet->write('A2', $data); $worksheet->write('A3', $data); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'A1:E1', style => 1, } ); $worksheet->add_sparkline( { location => 'F2', range => 'A2:E2', style => 2, } ); $worksheet->add_sparkline( { location => 'F3', range => 'A3:E3', series_color => '#FF0000', } ); # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 Sheet1!A3:E3 F3 Sheet1!A2:E2 F2 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_09.t000644 000765 000024 00000112304 12241403706 021560 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; # Set up sparklines # Test all the styles. for my $i ( 1 .. 36 ) { $worksheet->write( $i - 1, 0, $data ); $worksheet->add_sparkline( { location => 'F' . $i, range => 'A' . $i . ':E' . $i, style => $i, } ); } # End sparklines $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 Sheet1!A36:E36 F36 Sheet1!A35:E35 F35 Sheet1!A34:E34 F34 Sheet1!A33:E33 F33 Sheet1!A32:E32 F32 Sheet1!A31:E31 F31 Sheet1!A30:E30 F30 Sheet1!A29:E29 F29 Sheet1!A28:E28 F28 Sheet1!A27:E27 F27 Sheet1!A26:E26 F26 Sheet1!A25:E25 F25 Sheet1!A24:E24 F24 Sheet1!A23:E23 F23 Sheet1!A22:E22 F22 Sheet1!A21:E21 F21 Sheet1!A20:E20 F20 Sheet1!A19:E19 F19 Sheet1!A18:E18 F18 Sheet1!A17:E17 F17 Sheet1!A16:E16 F16 Sheet1!A15:E15 F15 Sheet1!A14:E14 F14 Sheet1!A13:E13 F13 Sheet1!A12:E12 F12 Sheet1!A11:E11 F11 Sheet1!A10:E10 F10 Sheet1!A9:E9 F9 Sheet1!A8:E8 F8 Sheet1!A7:E7 F7 Sheet1!A6:E6 F6 Sheet1!A5:E5 F5 Sheet1!A4:E4 F4 Sheet1!A3:E3 F3 Sheet1!A2:E2 F2 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_10.t000644 000765 000024 00000006766 12241403706 021566 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet(\$got); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write('A1', $data); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'A1:E1', high_point => 1, low_point => 1, negative_points => 1, first_point => 1, last_point => 1, markers => 1, series_color => '#C00000', negative_color => '#FF0000', markers_color => '#FFC000', first_color => '#00B050', last_color => '#00B0F0', high_color => '#FFFF00', low_color => '#92D050', } ); # End sparkline $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sparkline_11.t000644 000765 000024 00000015046 12241403706 021556 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_expected_to_aref _got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _assemble_xml_file() method. # $caption = " \tWorksheet: _assemble_xml_file()"; $worksheet = _new_worksheet( \$got ); $worksheet->{_excel_version} = 2010; $worksheet->{_name} = 'Sheet1'; $worksheet->select(); my $data = [ -2, 2, 3, -1, 0 ]; $worksheet->write( 'A1', $data ); $worksheet->write( 'A2', $data ); $worksheet->write( 'A3', $data ); $worksheet->write( 'A4', [ 1, 2, 3, 4, 5 ] ); # Set up sparklines $worksheet->add_sparkline( { location => 'F1', range => 'A1:E1', max => 0.5, min => -0.5, axis => 1, reverse => 1, empty_cells => 'zero', weight => 0.25, high_point => 1, low_point => 1, negative_points => 1, first_point => 1, last_point => 1, markers => 1, } ); $worksheet->add_sparkline( { location => 'F2', range => 'A2:E2', max => 'group', min => 'group', empty_cells => 'connect', weight => 2.25, } ); $worksheet->add_sparkline( { location => 'F3', range => 'A3:E3', max => 'group', min => '0', show_hidden => 1, weight => 6, date_axis => 'A4:E4', } ); # End sparkline $worksheet->_assemble_xml_file(); $expected = _expected_to_aref(); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __DATA__ -2 2 3 -1 0 -2 2 3 -1 0 -2 2 3 -1 0 1 2 3 4 5 Sheet1!A4:E4 Sheet1!A3:E3 F3 Sheet1!A2:E2 F2 Sheet1!A1:E1 F1 Excel-Writer-XLSX-0.76/t/worksheet/sub_calculate_spans.t000644 000765 000024 00000022601 12241403706 023272 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use strict; use warnings; use Excel::Writer::XLSX::Worksheet; use Test::More tests => 18; ############################################################################### # # Tests setup. # my $got; my $expected; my $caption; my $row; my $col; my $worksheet; ############################################################################### # # 1. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 0; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:16', '17:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 2. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 1; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:15', '16:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 3. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 2; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:14', '15:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 4. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 3; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:13', '14:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 5. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 4; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:12', '13:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 6. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 5; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:11', '12:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 7. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 6; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:10', '11:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 8. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 7; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:9', '10:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 9. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 8; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:8', '9:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 10. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 9; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:7', '8:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 11. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 10; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:6', '7:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 12. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 11; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:5', '6:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 13. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 12; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:4', '5:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 14. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 13; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:3', '4:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 15. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 14; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:2', '3:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 16. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 15; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ '1:1', '2:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 17. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 16; $col = 0; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ undef, '1:16', '17:17' ]; is_deeply( $got, $expected, $caption ); ############################################################################### # # 18. Test _calculate_spans() method for range ($row, $col), ($row+16, $col+16). # $row = 16; $col = 1; $caption = " \tWorksheet: _calculate_spans()"; $worksheet = new Excel::Writer::XLSX::Worksheet; for ($row .. $row +16) { $worksheet->write($row++, $col++, 1); } $worksheet->_calculate_spans(); $got = $worksheet->{_row_spans}; $expected = [ undef, '2:17', '18:18' ]; is_deeply( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_convert_date_time_01.t000644 000765 000024 00000055345 12241403706 024137 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet date and time handling. # # reverse ('(c)'), May 2004, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 100; my $got; my $date_time; my $number; my $result; my $worksheet = _new_worksheet( \$got ); $worksheet->{_1904} = 0; # Set float difference limit to half of an Excel millisecond my $flt_delta = 0.5 / ( 24 * 60 * 60 * 1000 ); ############################################################################## # # Float comparison function. # sub flt_cmp { return abs( $_[0] - $_[1] ) < $flt_delta; } ############################################################################## # # Test the flt_cmp() function used in the other tests. # $date_time = '1899-12-31T00:00:00.0004'; $number = 0; $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; # Test 1. This should pass. It is less than the float diff limit. ok( flt_cmp( $number, $result ), " Testing convert_date_time: $date_time $number" ); $date_time = '1899-12-31T00:00:00.0005'; $number = 0; $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; # Test 2. This should fail. It is equal to the float diff limit. my $diff = !flt_cmp( $number, $result ); ok( $diff, " Testing convert_date_time: $date_time $number" ); ############################################################################## # # Test the time data generated in Excel. # while ( ) { last if /^# stop/; # For debugging next unless /\S/; # Ignore blank lines next if /^#/; # Ignore comments if ( /"DateTime">([^<]+)/ ) { my $date_time = $1; my $line = ; if ( $line =~ /"Number">([^<]+)/ ) { my $number = 0 + $1; my $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; ok( flt_cmp( $number, $result ), " Testing convert_date_time: $date_time $number" ) or diag( "difference between $number and $result\n" . "= " . abs( $number - $result ) . "\n" . "> $flt_delta" ); } } } __DATA__ # Test data taken from Excel in XML format. 1899-12-31T00:00:00.000 0 1982-08-25T00:15:20.213 30188.010650613425 2065-04-19T00:16:48.290 60376.011670023145 2147-12-15T00:55:25.446 90565.038488958337 2230-08-10T01:02:46.891 120753.04359827546 2313-04-06T01:04:15.597 150942.04462496529 2395-11-30T01:09:40.889 181130.04838991899 2478-07-25T01:11:32.560 211318.04968240741 2561-03-21T01:30:19.169 241507.06272186342 2643-11-15T01:48:25.580 271695.07529606484 2726-07-12T02:03:31.919 301884.08578609955 2809-03-06T02:11:11.986 332072.09111094906 2891-10-31T02:24:37.095 362261.10042934027 2974-06-26T02:35:07.220 392449.10772245371 3057-02-19T02:45:12.109 422637.1147234838 3139-10-17T03:06:39.990 452826.12962951389 3222-06-11T03:08:08.251 483014.13065105322 3305-02-05T03:19:12.576 513203.13834 3387-10-01T03:29:42.574 543391.14563164348 3470-05-27T03:37:30.813 573579.15105107636 3553-01-21T04:14:38.231 603768.17683137732 3635-09-16T04:16:28.559 633956.17810832174 3718-05-13T04:17:58.222 664145.17914608796 3801-01-06T04:21:41.794 694333.18173372687 3883-09-02T04:56:35.792 724522.20596981479 3966-04-28T05:25:14.885 754710.2258667245 4048-12-21T05:26:05.724 784898.22645513888 4131-08-18T05:46:44.068 815087.24078782403 4214-04-13T05:48:01.141 845275.24167987274 4296-12-07T05:53:52.315 875464.24574438657 4379-08-03T06:14:48.580 905652.26028449077 4462-03-28T06:46:15.738 935840.28212659725 4544-11-22T07:31:20.407 966029.31343063654 4627-07-19T07:58:33.754 996217.33233511576 4710-03-15T08:07:43.130 1026406.3386936343 4792-11-07T08:29:11.091 1056594.3536005903 4875-07-04T09:08:15.328 1086783.3807329629 4958-02-27T09:30:41.781 1116971.3963169097 5040-10-23T09:34:04.462 1147159.3986627546 5123-06-20T09:37:23.945 1177348.4009715857 5206-02-12T09:37:56.655 1207536.4013501736 5288-10-08T09:45:12.230 1237725.406391551 5371-06-04T09:54:14.782 1267913.412671088 5454-01-28T09:54:22.108 1298101.4127558796 5536-09-24T10:01:36.151 1328290.4177795255 5619-05-20T12:09:48.602 1358478.5068125231 5702-01-14T12:34:08.549 1388667.5237100578 5784-09-08T12:56:06.495 1418855.5389640625 5867-05-06T12:58:58.217 1449044.5409515856 5949-12-30T12:59:54.263 1479232.5416002662 6032-08-24T13:34:41.331 1509420.5657561459 6115-04-21T13:58:28.601 1539609.5822754744 6197-12-14T14:02:16.899 1569797.5849178126 6280-08-10T14:36:17.444 1599986.6085352316 6363-04-06T14:37:57.451 1630174.60969272 6445-11-30T14:57:42.757 1660363.6234115392 6528-07-26T15:10:48.307 1690551.6325035533 6611-03-22T15:14:39.890 1720739.635183912 6693-11-15T15:19:47.988 1750928.6387498612 6776-07-11T16:04:24.344 1781116.6697262037 6859-03-07T16:22:23.952 1811305.6822216667 6941-10-31T16:29:55.999 1841493.6874536921 7024-06-26T16:58:20.259 1871681.7071789235 7107-02-21T17:04:02.415 1901870.7111390624 7189-10-16T17:18:29.630 1932058.7211762732 7272-06-11T17:47:21.323 1962247.7412190163 7355-02-05T17:53:29.866 1992435.7454845603 7437-10-02T17:53:41.076 2022624.7456143056 7520-05-28T17:55:06.044 2052812.7465977315 7603-01-21T18:14:49.151 2083000.7602910995 7685-09-16T18:17:45.738 2113189.7623349307 7768-05-12T18:29:59.700 2143377.7708298611 7851-01-07T18:33:21.233 2173566.773162419 7933-09-02T19:14:24.673 2203754.8016744559 8016-04-27T19:17:12.816 2233942.8036205554 8098-12-22T19:23:36.418 2264131.8080603937 8181-08-17T19:46:25.908 2294319.8239109721 8264-04-13T20:07:47.314 2324508.8387420601 8346-12-08T20:31:37.603 2354696.855296331 8429-08-03T20:39:57.770 2384885.8610853008 8512-03-29T20:50:17.067 2415073.8682530904 8594-11-22T21:02:57.827 2445261.8770581828 8677-07-19T21:23:05.519 2475450.8910360998 8760-03-14T21:34:49.572 2505638.8991848612 8842-11-08T21:39:05.944 2535827.9021521294 8925-07-04T21:39:18.426 2566015.9022965971 9008-02-28T21:46:07.769 2596203.9070343636 9090-10-24T21:57:55.662 2626392.9152275696 9173-06-19T22:19:11.732 2656580.9299968979 9256-02-13T22:23:51.376 2686769.9332335186 9338-10-09T22:27:58.771 2716957.9360968866 9421-06-05T22:43:30.392 2747146.9468795368 9504-01-30T22:48:25.834 2777334.9502990046 9586-09-24T22:53:51.727 2807522.9540709145 9669-05-20T23:12:56.536 2837711.9673210187 9752-01-14T23:15:54.109 2867899.9693762613 9834-09-10T23:17:12.632 2898088.9702850925 9999-12-31T23:59:59.000 2958465.999988426 Excel-Writer-XLSX-0.76/t/worksheet/sub_convert_date_time_02.t000644 000765 000024 00000032240 12241403706 024125 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet date and time handling. # Tests dates in 1900 and 1904 format. # # reverse ('(c)'), May 2004, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 420; my $got; my $date_time; my $number; my $result; my $worksheet = _new_worksheet( \$got ); ############################################################################## # # Test the dates generated by Excel. # while () { last if /^# stop/; # For debugging $worksheet->{_1904} = 0 if /Excel 1900/; # Change date system $worksheet->{_1904} = 1 if /Excel 1904/; # Change date system next unless /\S/; # Ignore blank lines next if /^#/; # Ignore comments my ($count, $date, $result) = split; my $number = $worksheet->convert_date_time($date); $number = -1 unless defined $number; is($number, $result, " Testing convert_date_time: $date $result") } __DATA__ # # The following data was generated by Excel. # # # Excel 1900 date system # 1 1899-12-31T 0 2 1900-01-00T 0 3 1900-01-01T 1 4 1900-02-27T 58 5 1900-02-28T 59 6 1900-02-29T 60 7 1900-03-01T 61 8 1900-03-02T 62 9 1900-03-11T 71 10 1900-04-08T 99 11 1900-09-12T 256 12 1901-05-03T 489 13 1901-10-13T 652 14 1902-02-15T 777 15 1902-06-06T 888 16 1902-09-25T 999 17 1902-09-27T 1001 18 1903-04-26T 1212 19 1903-08-05T 1313 20 1903-12-31T 1461 21 1904-01-01T 1462 22 1904-02-28T 1520 23 1904-02-29T 1521 24 1904-03-01T 1522 25 1907-02-27T 2615 26 1907-02-28T 2616 27 1907-03-01T 2617 28 1907-03-02T 2618 29 1907-03-03T 2619 30 1907-03-04T 2620 31 1907-03-05T 2621 32 1907-03-06T 2622 33 1999-01-01T 36161 34 1999-01-31T 36191 35 1999-02-01T 36192 36 1999-02-28T 36219 37 1999-03-01T 36220 38 1999-03-31T 36250 39 1999-04-01T 36251 40 1999-04-30T 36280 41 1999-05-01T 36281 42 1999-05-31T 36311 43 1999-06-01T 36312 44 1999-06-30T 36341 45 1999-07-01T 36342 46 1999-07-31T 36372 47 1999-08-01T 36373 48 1999-08-31T 36403 49 1999-09-01T 36404 50 1999-09-30T 36433 51 1999-10-01T 36434 52 1999-10-31T 36464 53 1999-11-01T 36465 54 1999-11-30T 36494 55 1999-12-01T 36495 56 1999-12-31T 36525 57 2000-01-01T 36526 58 2000-01-31T 36556 59 2000-02-01T 36557 60 2000-02-29T 36585 61 2000-03-01T 36586 62 2000-03-31T 36616 63 2000-04-01T 36617 64 2000-04-30T 36646 65 2000-05-01T 36647 66 2000-05-31T 36677 67 2000-06-01T 36678 68 2000-06-30T 36707 69 2000-07-01T 36708 70 2000-07-31T 36738 71 2000-08-01T 36739 72 2000-08-31T 36769 73 2000-09-01T 36770 74 2000-09-30T 36799 75 2000-10-01T 36800 76 2000-10-31T 36830 77 2000-11-01T 36831 78 2000-11-30T 36860 79 2000-12-01T 36861 80 2000-12-31T 36891 81 2001-01-01T 36892 82 2001-01-31T 36922 83 2001-02-01T 36923 84 2001-02-28T 36950 85 2001-03-01T 36951 86 2001-03-31T 36981 87 2001-04-01T 36982 88 2001-04-30T 37011 89 2001-05-01T 37012 90 2001-05-31T 37042 91 2001-06-01T 37043 92 2001-06-30T 37072 93 2001-07-01T 37073 94 2001-07-31T 37103 95 2001-08-01T 37104 96 2001-08-31T 37134 97 2001-09-01T 37135 98 2001-09-30T 37164 99 2001-10-01T 37165 100 2001-10-31T 37195 101 2001-11-01T 37196 102 2001-11-30T 37225 103 2001-12-01T 37226 104 2001-12-31T 37256 105 2400-01-01T 182623 106 2400-01-31T 182653 107 2400-02-01T 182654 108 2400-02-29T 182682 109 2400-03-01T 182683 110 2400-03-31T 182713 111 2400-04-01T 182714 112 2400-04-30T 182743 113 2400-05-01T 182744 114 2400-05-31T 182774 115 2400-06-01T 182775 116 2400-06-30T 182804 117 2400-07-01T 182805 118 2400-07-31T 182835 119 2400-08-01T 182836 120 2400-08-31T 182866 121 2400-09-01T 182867 122 2400-09-30T 182896 123 2400-10-01T 182897 124 2400-10-31T 182927 125 2400-11-01T 182928 126 2400-11-30T 182957 127 2400-12-01T 182958 128 2400-12-31T 182988 129 4000-01-01T 767011 130 4000-01-31T 767041 131 4000-02-01T 767042 132 4000-02-29T 767070 133 4000-03-01T 767071 134 4000-03-31T 767101 135 4000-04-01T 767102 136 4000-04-30T 767131 137 4000-05-01T 767132 138 4000-05-31T 767162 139 4000-06-01T 767163 140 4000-06-30T 767192 141 4000-07-01T 767193 142 4000-07-31T 767223 143 4000-08-01T 767224 144 4000-08-31T 767254 145 4000-09-01T 767255 146 4000-09-30T 767284 147 4000-10-01T 767285 148 4000-10-31T 767315 149 4000-11-01T 767316 150 4000-11-30T 767345 151 4000-12-01T 767346 152 4000-12-31T 767376 153 4321-01-01T 884254 154 4321-01-31T 884284 155 4321-02-01T 884285 156 4321-02-28T 884312 157 4321-03-01T 884313 158 4321-03-31T 884343 159 4321-04-01T 884344 160 4321-04-30T 884373 161 4321-05-01T 884374 162 4321-05-31T 884404 163 4321-06-01T 884405 164 4321-06-30T 884434 165 4321-07-01T 884435 166 4321-07-31T 884465 167 4321-08-01T 884466 168 4321-08-31T 884496 169 4321-09-01T 884497 170 4321-09-30T 884526 171 4321-10-01T 884527 172 4321-10-31T 884557 173 4321-11-01T 884558 174 4321-11-30T 884587 175 4321-12-01T 884588 176 4321-12-31T 884618 177 9999-01-01T 2958101 178 9999-01-31T 2958131 179 9999-02-01T 2958132 180 9999-02-28T 2958159 181 9999-03-01T 2958160 182 9999-03-31T 2958190 183 9999-04-01T 2958191 184 9999-04-30T 2958220 185 9999-05-01T 2958221 186 9999-05-31T 2958251 187 9999-06-01T 2958252 188 9999-06-30T 2958281 189 9999-07-01T 2958282 190 9999-07-31T 2958312 191 9999-08-01T 2958313 192 9999-08-31T 2958343 193 9999-09-01T 2958344 194 9999-09-30T 2958373 195 9999-10-01T 2958374 196 9999-10-31T 2958404 197 9999-11-01T 2958405 198 9999-11-30T 2958434 199 9999-12-01T 2958435 200 9999-12-31T 2958465 # # Excel 1904 date system # 201 1904-01-01T 0 202 1904-01-31T 30 203 1904-02-01T 31 204 1904-02-29T 59 205 1904-03-01T 60 206 1904-03-31T 90 207 1904-04-01T 91 208 1904-04-30T 120 209 1904-05-01T 121 210 1904-05-31T 151 211 1904-06-01T 152 212 1904-06-30T 181 213 1904-07-01T 182 214 1904-07-31T 212 215 1904-08-01T 213 216 1904-08-31T 243 217 1904-09-01T 244 218 1904-09-30T 273 219 1904-10-01T 274 220 1904-10-31T 304 221 1904-11-01T 305 222 1904-11-30T 334 223 1904-12-01T 335 224 1904-12-31T 365 225 1907-02-27T 1153 226 1907-02-28T 1154 227 1907-03-01T 1155 228 1907-03-02T 1156 229 1907-03-03T 1157 230 1907-03-04T 1158 231 1907-03-05T 1159 232 1907-03-06T 1160 233 1999-01-01T 34699 234 1999-01-31T 34729 235 1999-02-01T 34730 236 1999-02-28T 34757 237 1999-03-01T 34758 238 1999-03-31T 34788 239 1999-04-01T 34789 240 1999-04-30T 34818 241 1999-05-01T 34819 242 1999-05-31T 34849 243 1999-06-01T 34850 244 1999-06-30T 34879 245 1999-07-01T 34880 246 1999-07-31T 34910 247 1999-08-01T 34911 248 1999-08-31T 34941 249 1999-09-01T 34942 250 1999-09-30T 34971 251 1999-10-01T 34972 252 1999-10-31T 35002 253 1999-11-01T 35003 254 1999-11-30T 35032 255 1999-12-01T 35033 256 1999-12-31T 35063 257 2000-01-01T 35064 258 2000-01-31T 35094 259 2000-02-01T 35095 260 2000-02-29T 35123 261 2000-03-01T 35124 262 2000-03-31T 35154 263 2000-04-01T 35155 264 2000-04-30T 35184 265 2000-05-01T 35185 266 2000-05-31T 35215 267 2000-06-01T 35216 268 2000-06-30T 35245 269 2000-07-01T 35246 270 2000-07-31T 35276 271 2000-08-01T 35277 272 2000-08-31T 35307 273 2000-09-01T 35308 274 2000-09-30T 35337 275 2000-10-01T 35338 276 2000-10-31T 35368 277 2000-11-01T 35369 278 2000-11-30T 35398 279 2000-12-01T 35399 280 2000-12-31T 35429 281 2001-01-01T 35430 282 2001-01-31T 35460 283 2001-02-01T 35461 284 2001-02-28T 35488 285 2001-03-01T 35489 286 2001-03-31T 35519 287 2001-04-01T 35520 288 2001-04-30T 35549 289 2001-05-01T 35550 290 2001-05-31T 35580 291 2001-06-01T 35581 292 2001-06-30T 35610 293 2001-07-01T 35611 294 2001-07-31T 35641 295 2001-08-01T 35642 296 2001-08-31T 35672 297 2001-09-01T 35673 298 2001-09-30T 35702 299 2001-10-01T 35703 300 2001-10-31T 35733 301 2001-11-01T 35734 302 2001-11-30T 35763 303 2001-12-01T 35764 304 2001-12-31T 35794 305 2400-01-01T 181161 306 2400-01-31T 181191 307 2400-02-01T 181192 308 2400-02-29T 181220 309 2400-03-01T 181221 310 2400-03-31T 181251 311 2400-04-01T 181252 312 2400-04-30T 181281 313 2400-05-01T 181282 314 2400-05-31T 181312 315 2400-06-01T 181313 316 2400-06-30T 181342 317 2400-07-01T 181343 318 2400-07-31T 181373 319 2400-08-01T 181374 320 2400-08-31T 181404 321 2400-09-01T 181405 322 2400-09-30T 181434 323 2400-10-01T 181435 324 2400-10-31T 181465 325 2400-11-01T 181466 326 2400-11-30T 181495 327 2400-12-01T 181496 328 2400-12-31T 181526 329 4000-01-01T 765549 330 4000-01-31T 765579 331 4000-02-01T 765580 332 4000-02-29T 765608 333 4000-03-01T 765609 334 4000-03-31T 765639 335 4000-04-01T 765640 336 4000-04-30T 765669 337 4000-05-01T 765670 338 4000-05-31T 765700 339 4000-06-01T 765701 340 4000-06-30T 765730 341 4000-07-01T 765731 342 4000-07-31T 765761 343 4000-08-01T 765762 344 4000-08-31T 765792 345 4000-09-01T 765793 346 4000-09-30T 765822 347 4000-10-01T 765823 348 4000-10-31T 765853 349 4000-11-01T 765854 350 4000-11-30T 765883 351 4000-12-01T 765884 352 4000-12-31T 765914 353 4321-01-01T 882792 354 4321-01-31T 882822 355 4321-02-01T 882823 356 4321-02-28T 882850 357 4321-03-01T 882851 358 4321-03-31T 882881 359 4321-04-01T 882882 360 4321-04-30T 882911 361 4321-05-01T 882912 362 4321-05-31T 882942 363 4321-06-01T 882943 364 4321-06-30T 882972 365 4321-07-01T 882973 366 4321-07-31T 883003 367 4321-08-01T 883004 368 4321-08-31T 883034 369 4321-09-01T 883035 370 4321-09-30T 883064 371 4321-10-01T 883065 372 4321-10-31T 883095 373 4321-11-01T 883096 374 4321-11-30T 883125 375 4321-12-01T 883126 376 4321-12-31T 883156 377 9999-01-01T 2956639 378 9999-01-31T 2956669 379 9999-02-01T 2956670 380 9999-02-28T 2956697 381 9999-03-01T 2956698 382 9999-03-31T 2956728 383 9999-04-01T 2956729 384 9999-04-30T 2956758 385 9999-05-01T 2956759 386 9999-05-31T 2956789 387 9999-06-01T 2956790 388 9999-06-30T 2956819 389 9999-07-01T 2956820 390 9999-07-31T 2956850 391 9999-08-01T 2956851 392 9999-08-31T 2956881 393 9999-09-01T 2956882 394 9999-09-30T 2956911 395 9999-10-01T 2956912 396 9999-10-31T 2956942 397 9999-11-01T 2956943 398 9999-11-30T 2956972 399 9999-12-01T 2956973 400 9999-12-31T 2957003 # # The following dates are invalid. # # # Excel 1900 date system # 401 0000-12-30T -1 # Below year range. 402 1000-12-30T -1 # Below year range. 403 1899-12-30T -1 # Below year range. 404 2002-02-29T -1 # False leap-day. 405 2000-00-00T -1 # No month or day. 406 2000-01-00T -1 # No day. 407 2000-00-01T -1 # No month. 408 2000-13-01T -1 # Month out of range. 409 2000-12-32T -1 # Day out of range. 410 10000-01-01T -1 # Year out of range. # # Excel 1904 date system # 411 1899-12-31T -1 # Below year range. 412 1900-01-01T -1 # Below year range. 413 1903-12-31T -1 # Below year range. 414 2001-02-29T -1 # False leap-day. 415 2000-00-00T -1 # No month or day. 416 2000-01-00T -1 # No day. 417 2000-00-01T -1 # No month. 418 2000-13-01T -1 # Month out of range. 419 2000-12-32T -1 # Day out of range. 420 10000-01-01T -1 # Year out of range. Excel-Writer-XLSX-0.76/t/worksheet/sub_convert_date_time_03.t000644 000765 000024 00000057516 12241403706 024143 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet date and time handling. # # Tests date and time second handling. # # reverse ('(c)'), May 2004, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 104; my $got; my $date_time; my $number; my $result; my $worksheet = _new_worksheet( \$got ); $worksheet->{_1904} = 0; # Set float difference limit to half of an Excel millisecond my $flt_delta = 0.5 / ( 24 * 60 * 60 * 1000 ); ############################################################################## # # Float comparison function. # sub flt_cmp { return abs( $_[0] - $_[1] ) < $flt_delta; } ############################################################################## # # Test the flt_cmp() function used in the other tests. # $date_time = '1899-12-31T00:00:00.0004'; $number = 0; $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; # Test 1. This should pass. It is less than the float diff limit. ok( flt_cmp( $number, $result ), " Testing convert_date_time: $date_time $number" ); $date_time = '1899-12-31T00:00:00.0005'; $number = 0; $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; # Test 2. This should fail. It is equal to the float diff limit. my $diff = !flt_cmp( $number, $result ); ok( $diff, " Testing convert_date_time: $date_time $number" ); ############################################################################## # # Test some false times. # # These should fail. my $fail; $date_time = '1899-12-31T24:00:00.000'; $fail = !$worksheet->convert_date_time( $date_time ); ok( $fail, " Testing incorrect time: $date_time\tincorrect hour caught." ); $date_time = '1899-12-31T00:60:00.000'; $fail = !$worksheet->convert_date_time( $date_time ); ok( $fail, " Testing incorrect time: $date_time\tincorrect mins caught." ); $date_time = '1899-12-31T00:00:60.000'; $fail = !$worksheet->convert_date_time( $date_time ); ok( $fail, " Testing incorrect time: $date_time\tincorrect secs caught." ); $date_time = '1899-12-31T00:00:59.999999999999999999'; # Workaround for increased precision with longdouble perls. $date_time .= "9" x length (1 - 1e-16); $fail = !$worksheet->convert_date_time( $date_time ); ok( $fail, " Testing incorrect time: $date_time\tincorrect secs caught." ); ############################################################################## # # Test the time data generated in Excel. # while ( ) { last if /^# stop/; # For debugging next unless /\S/; # Ignore blank lines next if /^#/; # Ignore comments if ( /"DateTime">([^<]+)/ ) { my $date_time = $1; my $line = ; if ( $line =~ /"Number">([^<]+)/ ) { my $number = 0 + $1; my $result = $worksheet->convert_date_time( $date_time ); $result = -1 unless defined $result; ok( flt_cmp( $number, $result ), " Testing convert_date_time: $date_time $number" ) or diag( "difference between $number and $result\n" . "= " . abs( $number - $result ) . "\n" . "> $flt_delta" ); } } } __DATA__ # Test data taken from Excel in XML format. 1899-12-31T00:00:00.000 0 1899-12-31T00:15:20.213 1.0650613425925924E-2 1899-12-31T00:16:48.290 1.1670023148148148E-2 1899-12-31T00:55:25.446 3.8488958333333337E-2 1899-12-31T01:02:46.891 4.3598275462962965E-2 1899-12-31T01:04:15.597 4.4624965277777782E-2 1899-12-31T01:09:40.889 4.8389918981481483E-2 1899-12-31T01:11:32.560 4.9682407407407404E-2 1899-12-31T01:30:19.169 6.2721863425925936E-2 1899-12-31T01:48:25.580 7.5296064814814809E-2 1899-12-31T02:03:31.919 8.5786099537037031E-2 1899-12-31T02:11:11.986 9.1110949074074077E-2 1899-12-31T02:24:37.095 0.10042934027777778 1899-12-31T02:35:07.220 0.1077224537037037 1899-12-31T02:45:12.109 0.11472348379629631 1899-12-31T03:06:39.990 0.12962951388888888 1899-12-31T03:08:08.251 0.13065105324074075 1899-12-31T03:19:12.576 0.13833999999999999 1899-12-31T03:29:42.574 0.14563164351851851 1899-12-31T03:37:30.813 0.1510510763888889 1899-12-31T04:14:38.231 0.1768313773148148 1899-12-31T04:16:28.559 0.17810832175925925 1899-12-31T04:17:58.222 0.17914608796296297 1899-12-31T04:21:41.794 0.18173372685185185 1899-12-31T04:56:35.792 0.2059698148148148 1899-12-31T05:25:14.885 0.22586672453703704 1899-12-31T05:26:05.724 0.22645513888888891 1899-12-31T05:46:44.068 0.24078782407407406 1899-12-31T05:48:01.141 0.2416798726851852 1899-12-31T05:53:52.315 0.24574438657407408 1899-12-31T06:14:48.580 0.26028449074074073 1899-12-31T06:46:15.738 0.28212659722222222 1899-12-31T07:31:20.407 0.31343063657407405 1899-12-31T07:58:33.754 0.33233511574074076 1899-12-31T08:07:43.130 0.33869363425925925 1899-12-31T08:29:11.091 0.35360059027777774 1899-12-31T09:08:15.328 0.380732962962963 1899-12-31T09:30:41.781 0.39631690972222228 1899-12-31T09:34:04.462 0.39866275462962958 1899-12-31T09:37:23.945 0.40097158564814817 1899-12-31T09:37:56.655 0.40135017361111114 1899-12-31T09:45:12.230 0.40639155092592594 1899-12-31T09:54:14.782 0.41267108796296298 1899-12-31T09:54:22.108 0.41275587962962962 1899-12-31T10:01:36.151 0.41777952546296299 1899-12-31T12:09:48.602 0.50681252314814818 1899-12-31T12:34:08.549 0.52371005787037039 1899-12-31T12:56:06.495 0.53896406249999995 1899-12-31T12:58:58.217 0.54095158564814816 1899-12-31T12:59:54.263 0.54160026620370372 1899-12-31T13:34:41.331 0.56575614583333333 1899-12-31T13:58:28.601 0.58227547453703699 1899-12-31T14:02:16.899 0.58491781249999997 1899-12-31T14:36:17.444 0.60853523148148148 1899-12-31T14:37:57.451 0.60969271990740748 1899-12-31T14:57:42.757 0.6234115393518519 1899-12-31T15:10:48.307 0.6325035532407407 1899-12-31T15:14:39.890 0.63518391203703706 1899-12-31T15:19:47.988 0.63874986111111109 1899-12-31T16:04:24.344 0.66972620370370362 1899-12-31T16:22:23.952 0.68222166666666662 1899-12-31T16:29:55.999 0.6874536921296297 1899-12-31T16:58:20.259 0.70717892361111112 1899-12-31T17:04:02.415 0.71113906250000003 1899-12-31T17:18:29.630 0.72117627314814825 1899-12-31T17:47:21.323 0.74121901620370367 1899-12-31T17:53:29.866 0.74548456018518516 1899-12-31T17:53:41.076 0.74561430555555563 1899-12-31T17:55:06.044 0.74659773148148145 1899-12-31T18:14:49.151 0.760291099537037 1899-12-31T18:17:45.738 0.76233493055555546 1899-12-31T18:29:59.700 0.77082986111111118 1899-12-31T18:33:21.233 0.77316241898148153 1899-12-31T19:14:24.673 0.80167445601851861 1899-12-31T19:17:12.816 0.80362055555555545 1899-12-31T19:23:36.418 0.80806039351851855 1899-12-31T19:46:25.908 0.82391097222222232 1899-12-31T20:07:47.314 0.83874206018518516 1899-12-31T20:31:37.603 0.85529633101851854 1899-12-31T20:39:57.770 0.86108530092592594 1899-12-31T20:50:17.067 0.86825309027777775 1899-12-31T21:02:57.827 0.87705818287037041 1899-12-31T21:23:05.519 0.891036099537037 1899-12-31T21:34:49.572 0.89918486111111118 1899-12-31T21:39:05.944 0.90215212962962965 1899-12-31T21:39:18.426 0.90229659722222222 1899-12-31T21:46:07.769 0.90703436342592603 1899-12-31T21:57:55.662 0.91522756944444439 1899-12-31T22:19:11.732 0.92999689814814823 1899-12-31T22:23:51.376 0.93323351851851843 1899-12-31T22:27:58.771 0.93609688657407408 1899-12-31T22:43:30.392 0.94687953703703709 1899-12-31T22:48:25.834 0.95029900462962968 1899-12-31T22:53:51.727 0.95407091435185187 1899-12-31T23:12:56.536 0.96732101851851848 1899-12-31T23:15:54.109 0.96937626157407408 1899-12-31T23:17:12.632 0.97028509259259266 1899-12-31T23:59:59.999 0.99999998842592586 Excel-Writer-XLSX-0.76/t/worksheet/sub_extract_filter_tokens.t000644 000765 000024 00000004530 12241403706 024534 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # Tests for the token extraction method used to parse autofilter expressions. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_new_worksheet _is_deep_diff); use strict; use warnings; use Test::More tests => 18; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet = _new_worksheet( \$got ); ############################################################################### # # Test cases structured as [$input, [@expected_output]] # my @tests = ( [ undef, [], ], [ '', [], ], [ '0 < 2000', [0, '<', 2000], ], [ 'x < 2000', ['x', '<', 2000], ], [ 'x > 2000', ['x', '>', 2000], ], [ 'x == 2000', ['x', '==', 2000], ], [ 'x > 2000 and x < 5000', ['x', '>', 2000, 'and', 'x', '<', 5000], ], [ 'x = "foo"', ['x', '=', 'foo'], ], [ 'x = foo', ['x', '=', 'foo'], ], [ 'x = "foo bar"', ['x', '=', 'foo bar'], ], [ 'x = "foo "" bar"', ['x', '=', 'foo " bar'], ], [ 'x = "foo bar" or x = "bar foo"', ['x', '=', 'foo bar', 'or', 'x', '=', 'bar foo'], ], [ 'x = "foo "" bar" or x = "bar "" foo"', ['x', '=', 'foo " bar', 'or', 'x', '=', 'bar " foo'], ], [ 'x = """"""""', ['x', '=', '"""'], ], [ 'x = Blanks', ['x', '=', 'Blanks'], ], [ 'x = NonBlanks', ['x', '=', 'NonBlanks'], ], [ 'top 10 %', ['top', 10, '%'], ], [ 'top 10 items', ['top', 10, 'items'], ], ); ############################################################################### # # Run the test cases. # for my $aref ( @tests ) { my $expression = $aref->[0]; my $expected = $aref->[1]; my @results = $worksheet->_extract_filter_tokens( $expression ); my $testname = $expression || 'none'; _is_deep_diff( \@results, $expected, " \t" . $testname ); } __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_parse_filter_expression.t000644 000765 000024 00000005116 12241403706 025071 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # Tests for the token extraction method used to parse autofilter expressions. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_new_worksheet _is_deep_diff); use strict; use warnings; use Test::More tests => 24; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet = _new_worksheet( \$got ); ############################################################################### # # Test cases structured as [$input, [@expected_output]] # my @tests = ( [ 'x = 2000', [2, 2000], ], [ 'x == 2000', [2, 2000], ], [ 'x =~ 2000', [2, 2000], ], [ 'x eq 2000', [2, 2000], ], [ 'x <> 2000', [5, 2000], ], [ 'x != 2000', [5, 2000], ], [ 'x ne 2000', [5, 2000], ], [ 'x !~ 2000', [5, 2000], ], [ 'x > 2000', [4, 2000], ], [ 'x < 2000', [1, 2000], ], [ 'x >= 2000', [6, 2000], ], [ 'x <= 2000', [3, 2000], ], [ 'x > 2000 and x < 5000', [4, 2000, 0, 1, 5000], ], [ 'x > 2000 && x < 5000', [4, 2000, 0, 1, 5000], ], [ 'x > 2000 or x < 5000', [4, 2000, 1, 1, 5000], ], [ 'x > 2000 || x < 5000', [4, 2000, 1, 1, 5000], ], [ 'x = Blanks', [2, 'blanks'], ], [ 'x = NonBlanks', [5, ' '], ], [ 'x <> Blanks', [5, ' '], ], [ 'x <> NonBlanks', [2, 'blanks'], ], [ 'Top 10 Items', [30, 10], ], [ 'Top 20 %', [31, 20], ], [ 'Bottom 5 Items', [32, 5], ], [ 'Bottom 101 %', [33, 101], ], ); ############################################################################### # # Run the test cases. # for my $aref ( @tests ) { my $expression = $aref->[0]; my $expected = $aref->[1]; my @tokens = $worksheet->_extract_filter_tokens( $expression ); my @results = $worksheet->_parse_filter_expression( $expression, @tokens ); my $testname = $expression || 'none'; is_deeply( \@results, $expected, " \t" . $testname ); } Excel-Writer-XLSX-0.76/t/worksheet/sub_position_object.t000644 000765 000024 00000006214 12241403706 023325 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # Tests for the _position_object_emus method used to calcualte the twoCellAnchor # positions for drawing and chart objects. # # reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_new_worksheet _is_deep_diff); use strict; use warnings; use Test::More tests => 6; ############################################################################### # # Tests setup. # my @expected; my @got; my $tmp = ''; my $caption; my $worksheet; ############################################################################### # # 1. Test _position_object_emus() for chart vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 4, 8, 0, 0, 11, 22, 304800, 76200, 2438400, 1524000 ); $worksheet = _new_worksheet( \$tmp ); @got = $worksheet->_position_object_emus( 4, 8, 0, 0, 480, 288 ); _is_deep_diff( \@got, \@expected, $caption ); ############################################################################### # # 2. Test _position_object_emus() for chart vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 4, 8, 0, 0, 12, 22, 0, 76200, 2438400, 1524000 ); $worksheet = _new_worksheet( \$tmp ); $worksheet->set_column( 'L:L', 3.86 ); @got = $worksheet->_position_object_emus( 4, 8, 0, 0, 480, 288 ); _is_deep_diff( \@got, \@expected, $caption ); ############################################################################### # # 3. Test _position_object_emus() for chart vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 4, 8, 0, 0, 12, 23, 0, 0, 2438400, 1524000 ); $worksheet = _new_worksheet( \$tmp ); $worksheet->set_column( 'L:L', 3.86 ); $worksheet->set_row( 22, 6 ); @got = $worksheet->_position_object_emus( 4, 8, 0, 0, 480, 288 ); _is_deep_diff( \@got, \@expected, $caption ); ############################################################################### # # 4. Test _position_object_emus() for image vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 4, 8, 0, 0, 4, 9, 304800, 114300, 2438400, 1524000 ); $worksheet = _new_worksheet( \$tmp ); @got = $worksheet->_position_object_emus( 4, 8, 0, 0, 32, 32 ); _is_deep_diff( \@got, \@expected, $caption ); ############################################################################### # # 5. Test _position_object_emus() for image vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 4, 8, 19050, 28575, 5, 11, 95250, 142875, 2457450, 1552575 ); $worksheet = _new_worksheet( \$tmp ); @got = $worksheet->_position_object_emus( 4, 8, 2, 3, 72, 72 ); _is_deep_diff( \@got, \@expected, $caption ); ############################################################################### # # 6. Test _position_object_emus() for image vertices. # $caption = " \tWorksheet: _position_object_emus()"; @expected = ( 5, 1, 19050, 28575, 6, 4, 352425, 114300, 3067050, 219075 ); $worksheet = _new_worksheet( \$tmp ); @got = $worksheet->_position_object_emus( 5, 1, 2, 3, 99, 69 ); _is_deep_diff( \@got, \@expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_repeat_formula.t000644 000765 000024 00000005400 12241403706 023134 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), April 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 5; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $formula; my $row; my $col; my $worksheet = _new_worksheet(\$got); my $format = undef; ############################################################################### # # Test the store_formula/repeat_formula methods. # $caption = " \tWorksheet: repeat_formula()"; $expected = 'SUM(A1:A10)'; $row = 1; $col = 0; $formula = $worksheet->store_formula( '=SUM(A1:A10)' ); $worksheet->repeat_formula( $row, $col, $formula, $format ); $got = $worksheet->{_table}->{$row}->{$col}->[1]; is( $got, $expected, $caption ); ############################################################################### # # Test the store_formula/repeat_formula methods. # $caption = " \tWorksheet: repeat_formula()"; $expected = 'SUM(A2:A10)'; $row = 2; $col = 0; $formula = $worksheet->store_formula( '=SUM(A1:A10)' ); $worksheet->repeat_formula( $row, $col, $formula, $format, 'A1', 'A2' ); $got = $worksheet->{_table}->{$row}->{$col}->[1]; is( $got, $expected, $caption ); ############################################################################### # # Test the store_formula/repeat_formula methods. # $caption = " \tWorksheet: repeat_formula()"; $expected = 'SUM(A2:A10)'; $row = 3; $col = 0; $formula = $worksheet->store_formula( '=SUM(A1:A10)' ); $worksheet->repeat_formula( $row, $col, $formula, $format, qr/^A1$/, 'A2' ); $got = $worksheet->{_table}->{$row}->{$col}->[1]; is( $got, $expected, $caption ); ############################################################################### # # Test the store_formula/repeat_formula methods. # $caption = " \tWorksheet: repeat_formula()"; $expected = 'A2+A2'; $row = 4; $col = 0; $formula = $worksheet->store_formula( 'A1+A1' ); $worksheet->repeat_formula( $row, $col, $formula, $format, ('A1', 'A2') x 2 ); $got = $worksheet->{_table}->{$row}->{$col}->[1]; is( $got, $expected, $caption ); ############################################################################### # # Test the store_formula/repeat_formula methods. # $caption = " \tWorksheet: repeat_formula()"; $expected = 'A10 + SIN(A10)'; $row = 5; $col = 0; $formula = $worksheet->store_formula( 'A1 + SIN(A1)' ); $worksheet->repeat_formula( $row, $col, $formula, $format, (qr/^A1$/, 'A10') x 2 ); $got = $worksheet->{_table}->{$row}->{$col}->[1]; is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_auto_filter.t000644 000765 000024 00000031347 12241403706 023667 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 21; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $filter; my @matches; ############################################################################### # # Test the _write_auto_filter() method with no filter. # $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column()" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == East'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == East or x == North'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == East and x == North'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x != East'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == S*'; # Begins with character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x != S*'; # Doesn't begin with character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == *h'; # Ends with character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x != *h'; # Doesn't end with character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x =~ *o*'; # Contains character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x !~ *r*'; # Doesn't contain character. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'A', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x == 1000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x != 2000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x > 3000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x >= 4000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x < 5000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x <= 6000'; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter() method for the following filter: # $filter = 'x >= 1000 and x <= 2000'; # Between. $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column( 'C', $filter ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '$filter' )" ); ############################################################################### # # Test the _write_auto_filter_list() method for the following filter: # @matches = qw( East ); $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column_list( 'A', @matches ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '@matches' )" ); ############################################################################### # # Test the _write_auto_filter_list() method for the following filter: # @matches = qw( East North ); $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column_list( 'A', @matches ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '@matches' )" ); ############################################################################### # # Test the _write_auto_filter_list() method for the following filter: # @matches = qw( February January July June ); $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_name} = 'Sheet1'; $worksheet->autofilter( 'A1:D51' ); $worksheet->filter_column_list( 'D', @matches ); $worksheet->_write_auto_filter(); is( $got, $expected, " \tWorksheet: filter_column( '@matches' )" ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_brk.t000644 000765 000024 00000001430 12241403706 022116 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_brk() method. # $caption = " \tWorksheet: _write_brk()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_brk( 1, 16383 ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_cell.t000644 000765 000024 00000004467 12241403706 022274 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 5; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $format = undef; ############################################################################### # # Test the _write_cell() method for numbers. # $caption = " \tWorksheet: _write_cell()"; $expected = '1'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell( 0, 0, [ 'n', 1 ] ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_cell() method for strings. # $caption = " \tWorksheet: _write_cell()"; $expected = '0'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell( 3, 1, [ 's', 0 ] ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_cell() method for formulas with an optional value. # $caption = " \tWorksheet: _write_cell()"; $expected = 'A3+A50'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell( 1, 2, [ 'f', 'A3+A5', $format, 0 ] ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_cell() method for formulas without an optional value. # $caption = " \tWorksheet: _write_cell()"; $expected = 'A3+A50'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell( 1, 2, [ 'f', 'A3+A5'] ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_cell() method for array formulas with an optional value. # $caption = " \tWorksheet: _write_cell()"; $expected = 'SUM(B1:C1*B2:C2)9500'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell( 0, 0, [ 'a', 'SUM(B1:C1*B2:C2)', $format, 'A1', 9500 ] ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_cell_value.t000644 000765 000024 00000001416 12241403706 023457 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_cell_value() method. # $caption = " \tWorksheet: _write_cell_value()"; $expected = '1'; $worksheet = _new_worksheet(\$got); $worksheet->_write_cell_value(1); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_col_breaks.t000644 000765 000024 00000002551 12241403706 023451 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 2; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_col_breaks() method. # $caption = " \tWorksheet: _write_col_breaks()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_vbreaks} = [1]; $worksheet->_write_col_breaks(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_col_breaks() method. # $caption = " \tWorksheet: _write_col_breaks()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->{_vbreaks} = [8, 3, 1, 0]; $worksheet->_write_col_breaks(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_col_info.t000644 000765 000024 00000007300 12241403706 023132 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 6; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $min; my $max; my $width; my $format; my $hidden; my $level; my $collapsed; ############################################################################### # # 1. Test the _write_col_info() method. # $min = 1; $max = 3; $width = 5; $format = undef; $hidden = 0; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); ############################################################################### # # 2. Test the _write_col_info() method. # $min = 5; $max = 5; $width = 8; $format = undef; $hidden = 1; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); ############################################################################### # # 3. Test the _write_col_info() method. # $min = 7; $max = 7; $width = undef; $format = Excel::Writer::XLSX::Format->new( {}, {}, xf_index => 1 ); $hidden = 0; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); ############################################################################### # # 4. Test the _write_col_info() method. # $min = 8; $max = 8; $width = 8.43; $format = Excel::Writer::XLSX::Format->new( {}, {}, xf_index => 1 ); $hidden = 0; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); ############################################################################### # # 5. Test the _write_col_info() method. # $min = 9; $max = 9; $width = 2; $format = undef; $hidden = 0; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); ############################################################################### # # 6. Test the _write_col_info() method. # $min = 11; $max = 11; $width = undef; $format = undef; $hidden = 1; $level = 0; $collapsed = 0; $caption = " \tWorksheet: _write_col_info( $min, $max )"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_col_info( $min, $max, $width, $format, $hidden ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_conditional_formatting.t000644 000765 000024 00000006155 12241403706 026106 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), October 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 4; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $format = Excel::Writer::XLSX::Format->new( \{}, \{} ); ############################################################################### # # Test the _write_conditional_formatting() method. # $caption = " \tWorksheet: _write_conditional_formatting()"; $expected = '5'; $worksheet = _new_worksheet(\$got); $worksheet->conditional_formatting( 'A1', { type => 'cell', format => $format, criteria => 'greater than', value => 5 } ); $worksheet->_write_conditional_formats(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_conditional_formatting() method. # $caption = " \tWorksheet: _write_conditional_formatting()"; $expected = '30'; $worksheet = _new_worksheet(\$got); $worksheet->conditional_formatting( 'A2', { type => 'cell', format => $format, criteria => 'less than', value => 30 } ); $worksheet->_write_conditional_formats(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_conditional_formatting() method. # $caption = " \tWorksheet: _write_conditional_formatting()"; $expected = '50'; $worksheet = _new_worksheet(\$got); $worksheet->conditional_formatting( 'A3', { type => 'cell', format => undef, criteria => '>=', value => 50 } ); $worksheet->_write_conditional_formats(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_conditional_formatting() method. # $caption = " \tWorksheet: _write_conditional_formatting()"; $expected = '1020'; $worksheet = _new_worksheet(\$got); $worksheet->conditional_formatting( 'A1', { type => 'cell', format => $format, criteria => 'between', minimum => 10, maximum => 20, } ); $worksheet->_write_conditional_formats(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_custom_filter.t000644 000765 000024 00000001506 12241403706 024223 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_custom_filter() method. # $caption = " \tWorksheet: _write_custom_filter()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_custom_filter( 4, 3000 ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_custom_filters.t000644 000765 000024 00000002467 12241403706 024415 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 2; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_custom_filters() method. # $caption = " \tWorksheet: _write_custom_filters()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_custom_filters( 4, 4000 ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_custom_filters() method. # $caption = " \tWorksheet: _write_custom_filters()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_custom_filters( 4, 3000, 0, 1, 8000 ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_data_validations_01.t000644 000765 000024 00000015012 12241403706 025147 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet data validation methods. # # reverse ('(c)'), June 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 8; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Data validation example 1 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '0'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A1', { validate => 'integer', criteria => '>', value => 0, } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 1 from docs (with options turned off). # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '0'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A1', { validate => 'integer', criteria => '>', value => 0, ignore_blank => 0, show_input => 0, show_error => 0, } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 2 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = 'E3'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A2', { validate => 'integer', criteria => '>', value => '=E3', } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 3 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '0.10.5'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A3', { validate => 'decimal', criteria => 'between', minimum => 0.1, maximum => 0.5, } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 4 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '"open,high,close"'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A4', { validate => 'list', source => [ 'open', 'high', 'close' ], } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 5 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '$E$4:$G$4'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A5', { validate => 'list', source => '=$E$4:$G$4', } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 6 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '3944839794'; $worksheet = _new_worksheet(\$got); $worksheet->{_1904} = 0; $worksheet->data_validation( 'A6', { validate => 'date', criteria => 'between', minimum => '2008-01-01T', maximum => '2008-12-12T', } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Data validation example 7 from docs. # $caption = " \tWorksheet: _write_sheet_views()"; $expected = '1100'; $worksheet = _new_worksheet(\$got); $worksheet->data_validation( 'A7', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 100, input_title => 'Enter an integer:', input_message => 'between 1 and 100', } ); $worksheet->_write_data_validations(); $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_data_validations_02.t000644 000765 000024 00000074235 12241403706 025164 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet data validation methods. # # reverse ('(c)'), June 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions qw(_got_to_aref _is_deep_diff _new_worksheet); use strict; use warnings; use Test::More tests => 44; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test 1 Integer between 1 and 10. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer between"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 2 Integer not between 1 and 10. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'not between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer not between"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 3,4,5 Integer == 1. # for my $operator ( 'equal to', '=', '==' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer equal to"; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 6,7,8 Integer != 1. # for my $operator ( 'not equal to', '<>', '!=' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer not equal to"; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 9,10 Integer > 1. # for my $operator ( 'greater than', '>' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer >"; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 11,12 Integer < 1. # for my $operator ( 'less than', '<' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer <"; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 13,14 Integer >= 1. # for my $operator ( 'greater than or equal to', '>=' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer >="; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 15,16 Integer <= 1. # for my $operator ( 'less than or equal to', '<=' ) { $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => $operator, value => 1, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: integer <="; $expected = '1'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); } ############################################################################### # # Test 17 Integer between 1 and 10 (same as test 1) + Ignore blank off. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, ignore_blank => 0, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: ignore blank off"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 18 Integer between 1 and 10 (same as test 1) + Error style == warning.. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, error_type => 'warning', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: error style = warning"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 19 Integer between 1 and 10 (same as test 1) + Error style == infor.. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, error_type => 'information', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: error style = information"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 20 Integer between 1 and 10 (same as test 1) # + input title. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: with input title"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 21 Integer between 1 and 10 (same as test 1) # + input title. # + input message. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', input_message => 'Input message February', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: + input message"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 22 Integer between 1 and 10 (same as test 1) # + input title. # + input message. # + error title. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', input_message => 'Input message February', error_title => 'Error title March', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: + error title"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 23 Integer between 1 and 10 (same as test 1) # + input title. # + input message. # + error title. # + error message. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', input_message => 'Input message February', error_title => 'Error title March', error_message => 'Error message April', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: + error message"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 24 Integer between 1 and 10 (same as test 1) # + input title. # + input message. # + error title. # + error message. # - input message box. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', input_message => 'Input message February', error_title => 'Error title March', error_message => 'Error message April', show_input => 0, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: no input box"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 25 Integer between 1 and 10 (same as test 1) # + input title. # + input message. # + error title. # + error message. # - input message box. # - error message box. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, input_title => 'Input title January', input_message => 'Input message February', error_title => 'Error title March', error_message => 'Error message April', show_input => 0, show_error => 0, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: no error box"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 26 'Any' value shouldn't produce a DV record. # $got = ''; $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'any', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: any validation"; $expected = ''; _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 27 Decimal = 1.2345 # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'decimal', criteria => '==', value => 1.2345, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: decimal validation"; $expected = '1.2345'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 28 List = a,bb,ccc # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'list', source => [ 'a', 'bb', 'ccc' ], } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: explicit list"; $expected = '"a,bb,ccc"'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 29 List = a,bb,ccc, No dropdown # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'list', source => [ 'a', 'bb', 'ccc' ], dropdown => 0, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: list with no dropdown"; $expected = '"a,bb,ccc"'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 30 List = $D$1:$D$5 # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'A1:A1', { validate => 'list', source => '=$D$1:$D$5', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: list with range"; $expected = '$D$1:$D$5'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 31 Date = 39653 (2008-07-24) # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'date', criteria => '==', value => 39653, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: date"; $expected = '39653'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 32 Date = 2008-07-24T # $worksheet = _new_worksheet( \$got ); $worksheet->{_1904} = 0; $worksheet->data_validation( 'B5', { validate => 'date', criteria => '==', value => '2008-07-24T', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: date auto"; $expected = '39653'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 33 Date between ranges. # $worksheet = _new_worksheet( \$got ); $worksheet->{_1904} = 0; $worksheet->data_validation( 'B5', { validate => 'date', criteria => 'between', minimum => '2008-01-01T', maximum => '2008-12-12T', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: date auto, between"; $expected = '3944839794'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 34 Time = 0.5 (12:00:00) # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5:B5', { validate => 'time', criteria => '==', value => 0.5, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: time"; $expected = '0.5'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 35 Time = T12:00:00 # $worksheet = _new_worksheet( \$got ); $worksheet->{_1904} = 0; $worksheet->data_validation( 'B5', { validate => 'time', criteria => '==', value => 'T12:00:00', } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: time auto"; $expected = '0.5'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 36 Custom == 10. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'Custom', criteria => '==', value => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: custom"; $expected = '10'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 37 Check the row/col processing: single A1 style cell. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 38 Check the row/col processing: single A1 style range. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5:B10', { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 39 Check the row/col processing: single (row, col) style cell. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 4, 1, { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 40 Check the row/col processing: single (row, col) style range. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 4, 1, 9, 1, { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 41 Check the row/col processing: multiple (row, col) style cells. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 4, 1, { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, other_cells => [ [ 4, 3, 4, 3 ] ], } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 42 Check the row/col processing: multiple (row, col) style cells. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 4, 1, { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, other_cells => [ [ 6, 1, 6, 1 ], [ 8, 1, 8, 1 ] ], } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 43 Check the row/col processing: multiple (row, col) style cells. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 4, 1, 8, 1, { validate => 'integer', criteria => 'between', minimum => 1, maximum => 10, other_cells => [ [ 3, 3, 3, 3 ] ], } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: range options"; $expected = '110'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); ############################################################################### # # Test 44 Multiple validations. # $worksheet = _new_worksheet( \$got ); $worksheet->data_validation( 'B5', { validate => 'integer', criteria => '>', value => 10, } ); $worksheet->data_validation( 'C10', { validate => 'integer', criteria => '<', value => 10, } ); $worksheet->_write_data_validations(); $caption = " \tData validation api: multiple validations"; $expected = '1010'; $expected = _got_to_aref( $expected ); $got = _got_to_aref( $got ); _is_deep_diff( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_dimension.t000644 000765 000024 00000011324 12241403706 023330 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 10; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $cell_ref; ############################################################################### # # 1. Test the _write_dimension() method with no dimensions set. # $caption = " \tWorksheet: _write_dimension(undef)"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 2. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( $cell_ref, 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 3. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1048576'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( $cell_ref, 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 4. Test the _write_dimension() method with dimensions set. # $cell_ref = 'XFD1'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( $cell_ref, 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 5. Test the _write_dimension() method with dimensions set. # $cell_ref = 'XFD1048576'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( $cell_ref, 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 6. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( $cell_ref, 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 7. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1:B2'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( 'A1', 'some string' ); $worksheet->write( 'B2', 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 8. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1:B2'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( 'B2', 'some string' ); $worksheet->write( 'A1', 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 9. Test the _write_dimension() method with dimensions set. # $cell_ref = 'B2:H11'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( 'B2', 'some string' ); $worksheet->write( 'H11', 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); ############################################################################### # # 10. Test the _write_dimension() method with dimensions set. # $cell_ref = 'A1:XFD1048576'; $caption = " \tWorksheet: _write_dimension('$cell_ref')"; $expected = qq(); $worksheet = _new_worksheet(\$got); $worksheet->write( 'A1', 'some string' ); $worksheet->write( 'XFD1048576', 'some string' ); $worksheet->_write_dimension(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_filter.t000644 000765 000024 00000001422 12241403706 022626 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_filter() method. # $caption = " \tWorksheet: _write_filter()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_filter( 'East' ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_filter_column.t000644 000765 000024 00000001553 12241403706 024210 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_filter_column() method. # $caption = " \tWorksheet: _write_filter_column()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_filter_column( 0, 1, ['East'] ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_filters.t000644 000765 000024 00000002720 12241403706 023013 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 3; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_filters() method. # $caption = " \tWorksheet: _write_filters()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_filters( 'East' ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_filters() method. # $caption = " \tWorksheet: _write_filters()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_filters( 'East', 'South' ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_filters() method. # $caption = " \tWorksheet: _write_filters()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_filters( 'blanks' ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_header_footer.t000644 000765 000024 00000004757 12241403706 024165 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 5; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_odd_header() method. # $caption = " \tWorksheet: _write_odd_header()"; $expected = 'Page &P of &N'; $worksheet = _new_worksheet(\$got); $worksheet->set_header('Page &P of &N'); $worksheet->_write_odd_header(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_odd_footer() method. # $caption = " \tWorksheet: _write_odd_footer()"; $expected = '&F'; $worksheet = _new_worksheet(\$got); $worksheet->set_footer('&F'); $worksheet->_write_odd_footer(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_header_footer() method. Header only. # $caption = " \tWorksheet: _write_header_footer()"; $expected = 'Page &P of &N'; $worksheet = _new_worksheet(\$got); $worksheet->set_header('Page &P of &N'); $worksheet->_write_header_footer(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_header_footer() method. Footer only. # $caption = " \tWorksheet: _write_header_footer()"; $expected = '&F'; $worksheet = _new_worksheet(\$got); $worksheet->set_footer('&F'); $worksheet->_write_header_footer(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_header_footer() method. Header and footer. # $caption = " \tWorksheet: _write_header_footer()"; $expected = 'Page &P of &N&F'; $worksheet = _new_worksheet(\$got); $worksheet->set_header('Page &P of &N'); $worksheet->set_footer('&F'); $worksheet->_write_header_footer(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_hyperlink.t000644 000765 000024 00000004140 12241403706 023346 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 4; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_hyperlink_external() method. # $caption = " \tWorksheet: _write_hyperlink_external()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_hyperlink_external( 0, 0, 1 ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_hyperlink_internal() method. # $caption = " \tWorksheet: _write_hyperlink_internal()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_hyperlink_internal( 0, 0, 'Sheet2!A1', 'Sheet2!A1' ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_hyperlink_internal() method. # $caption = " \tWorksheet: _write_hyperlink_internal()"; $expected = q(); $worksheet = _new_worksheet(\$got); $worksheet->_write_hyperlink_internal( 4, 0, "'Data Sheet'!D5", "'Data Sheet'!D5" ); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_hyperlink_internal() method. # $caption = " \tWorksheet: _write_hyperlink_internal()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_hyperlink_internal( 17, 0, 'Sheet2!A1', 'Sheet2!A1', 'Screen Tip 1' ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_legacy_drawing.t000644 000765 000024 00000001512 12241403706 024320 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_legacy_drawing() method. # $caption = " \tWorksheet: _write_legacy_drawing()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->{_has_vml} = 1; $worksheet->_write_legacy_drawing(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_merge_cell.t000644 000765 000024 00000001451 12241403706 023441 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_merge_cell() method. # $caption = " \tWorksheet: _write_merge_cell()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_merge_cell( [ 2, 1, 2, 2 ] ); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_merge_cells.t000644 000765 000024 00000003611 12241403706 023624 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Excel::Writer::XLSX::Format; use Test::More tests => 3; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $format = Excel::Writer::XLSX::Format->new( 0 ); ############################################################################### # # Test the _write_merge_cells() method. With $row, $col notation. # $caption = " \tWorksheet: _write_merge_cells()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->merge_range( 2, 1, 2, 2, 'Foo', $format); $worksheet->_write_merge_cells(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_merge_cells() method. With A1 notation. # $caption = " \tWorksheet: _write_merge_cells()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->merge_range( 'B3:C3', 'Foo', $format); $worksheet->_write_merge_cells(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_merge_cells() method. With more than one range. # $caption = " \tWorksheet: _write_merge_cells()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->merge_range( 'B3:C3', 'Foo', $format); $worksheet->merge_range( 'A2:D2', 'Foo', $format); $worksheet->_write_merge_cells(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_page_margins.t000644 000765 000024 00000012007 12241403706 023776 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 11; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margins(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margins_LR(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margins_TB(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margin_left(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margin_right(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margin_top(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_margin_bottom(0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_header('', 0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_footer('', 0.5); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_margins() method. # $caption = " \tWorksheet: _write_page_margins()"; $expected = ''; $worksheet = _new_worksheet(\$got); # Test numeric value with whitespace. $worksheet->set_margins( " 0.5\n"); $worksheet->_write_page_margins(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_page_set_up_pr.t000644 000765 000024 00000001510 12241403706 024333 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_page_set_up_pr() method. # $caption = " \tWorksheet: _write_page_set_up_pr()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->{_fit_page} = 1; $worksheet->_write_page_set_up_pr(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_page_setup.t000644 000765 000024 00000004542 12241403706 023503 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 5; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_page_setup() method. Without any page setup. # $caption = " \tWorksheet: _write_page_setup()"; $expected = undef; $worksheet = _new_worksheet(\$got); $worksheet->_write_page_setup(); is( $got, $expected, $caption ); $got = ''; # Reset after previous undef value; ############################################################################### # # Test the _write_page_setup() method. With set_landscape(); # $caption = " \tWorksheet: _write_page_setup()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_landscape(); $worksheet->_write_page_setup(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_setup() method. With set_portrait(); # $caption = " \tWorksheet: _write_page_setup()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_portrait(); $worksheet->_write_page_setup(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_setup() method. With set_paper(); # $caption = " \tWorksheet: _write_page_setup()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->set_paper( 9 ); $worksheet->_write_page_setup(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_page_setup() method. With print_across(); # $caption = " \tWorksheet: _write_page_setup()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->print_across(); $worksheet->_write_page_setup(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_pane.t000644 000765 000024 00000013363 12241403706 022273 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), February 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 14; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # 1. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 1 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 2. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 0, 1 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 3. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 1, 1 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 4. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 1, 0, 19 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 5. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 'G4' ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 6. Test the _write_panes() method. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->freeze_panes( 3, 6, 3, 6, 1); $worksheet->_write_panes(); is( $got, $expected, $caption ); # Split panes tests. ############################################################################### # # 7. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 15 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 8. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 30 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 9. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 105 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 10. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 0, 8.43 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 11. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 0, 17.57 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 12. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 0, 45 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 13. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 15, 8.43 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); ############################################################################### # # 14. Test the _write_panes() method. Split panes. # $caption = " \tWorksheet: _write_panes()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->split_panes( 45, 54.14 ); $worksheet->_write_panes(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_phonetic_pr.t000644 000765 000024 00000001464 12241403706 023661 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 1; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_phonetic_pr() method. # $caption = " \tWorksheet: _write_phonetic_pr()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->_write_phonetic_pr(); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_print_options.t000644 000765 000024 00000006551 12241403706 024260 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 8; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; ############################################################################### # # Test the _write_print_options() method. Without any options. # $caption = " \tWorksheet: _write_print_options()"; $expected = undef; $worksheet = _new_worksheet(\$got); $worksheet->_write_print_options(); is( $got, $expected, $caption ); $got = ''; # Reset after previous undef value; ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->center_horizontally(); $worksheet->_write_print_options(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->center_vertically(); $worksheet->_write_print_options(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->center_horizontally(); $worksheet->center_vertically(); $worksheet->_write_print_options(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->hide_gridlines(); $worksheet->_write_print_options(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->hide_gridlines(0); $worksheet->_write_print_options(); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->hide_gridlines(); $worksheet->_write_print_options(1); is( $got, $expected, $caption ); ############################################################################### # # Test the _write_print_options() method. # $caption = " \tWorksheet: _write_print_options()"; $expected = ''; $worksheet = _new_worksheet(\$got); $worksheet->hide_gridlines(0); $worksheet->_write_print_options(2); is( $got, $expected, $caption ); __END__ Excel-Writer-XLSX-0.76/t/worksheet/sub_write_row.t000644 000765 000024 00000006201 12241403706 022150 0ustar00Johnstaff000000 000000 ############################################################################### # # Tests for Excel::Writer::XLSX::Worksheet methods. # # reverse ('(c)'), September 2010, John McNamara, jmcnamara@cpan.org # use lib 't/lib'; use TestFunctions '_new_worksheet'; use strict; use warnings; use Test::More tests => 8; ############################################################################### # # Tests setup. # my $expected; my $got; my $caption; my $worksheet; my $format = Excel::Writer::XLSX::Format->new( {}, {}, xf_index => 1 ); ############################################################################### # # 1. Test the _write_row() method. # $caption = " \tWorksheet: _write_row()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_row( 0 ); is( $got, $expected, $caption ); ############################################################################### # # 2. Test the _write_row() method. # $caption = " \tWorksheet: _write_row()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_row( 2, '2:2' ); is( $got, $expected, $caption ); ############################################################################### # # 3. Test the _write_row() method. # $caption = " \tWorksheet: _write_row()"; $expected = ''; $worksheet = _new_worksheet( \$got ); $worksheet->_write_row( 1, undef, 30 ); is( $got, $expected, $caption ); ############################################################################### # # 4. Test the _write_row() method. # $caption = " \tWorksheet: _write_row()"; $expected = '