NAME

Spreadsheet::XLSX::Reader::LibXML::FormatInterface - Interface for XLSX format parser

SYNOPSYS

#!/usr/bin/env perl
use MooseX::ShortCut::BuildInstance 'build_instance';
use Spreadsheet::XLSX::Reader::LibXML::FmtDefault;
use Spreadsheet::XLSX::Reader::LibXML::ParseExcelFormatStrings;
use Spreadsheet::XLSX::Reader::LibXML::FormatInterface;
use Spreadsheet::XLSX::Reader::LibXML;
my $formatter = build_instance(
	package => 'FormatInstance',
	# The base United State localization settings - Inject your customized format class here
	superclasses => [ 'Spreadsheet::XLSX::Reader::LibXML::FmtDefault' ],
	# ParseExcelFormatStrings => The Excel string parser generation engine
	# FormatInterface => The top level interface defining minimum compatability requirements
	add_roles_in_sequence =>[qw(
		Spreadsheet::XLSX::Reader::LibXML::ParseExcelFormatStrings
		Spreadsheet::XLSX::Reader::LibXML::FormatInterface
	)],
	target_encoding => 'latin1',# Adjust the string output encoding here
	datetime_dates	=> 1,
);
# Set specific default custom formats here
$formatter->set_defined_excel_formats( 0x2C => 'MyCoolFormatHere' );

# Use the formatter like Spreadsheet::ParseExcel
my $parser	= Spreadsheet::XLSX::Reader::LibXML->new;
my $workbook = $parser->parse( '../t/test_files/TestBook.xlsx', $formatter )

# This is an alternate way
$workbook = Spreadsheet::XLSX::Reader::LibXML->new(
	file_name => '../t/test_files/TestBook.xlsx',
	# Adding the formatter is not strictly necessary unless you want to customize it
	formatter_inst => $formatter,
);

DESCRIPTION

In general a completly built formatter class as shown in the SYNOPSYS is used by this package to turn unformatted data into formatted data. This is generally used in Excel to implement localization of the output. The general localization options are then stored at the workbook level. This includes any custom output formatting defined by the application user. The selection of which output formatting to apply to which data element is stored in the individual worksheet. This class provides the implementation of the localizations. The sub modules of the class above provide additional options to adjust the format applied for requested default positions and they also provide helper functions to generate user defined and applied formats as well. Review the method descriptions below, the sub module documentation, and the documentation for "set_custom_formats( $key => $format_object_or_string )" in Spreadsheet::XLSX::Reader::LibXML::Worksheet in order to understand the full range of configurability provided when interacting with the overall spreadsheet parser.

Module Description

This module is written to be an Interface for the Formatter class used in Spreadsheet::XLSX::Reader::LibXML so that the core parsing engine and the regional formatting settings for the parser can easily be swapped. This interface really only defines method requirements for the undlerlying instance since the engine it uses was custom-built for Spreadsheet::XLSX::Reader::LibXML. However porting the underlying elements to Spreadsheet::ParseExcel (for example) should be easier because of the abstraction.

This module does not provide unique methods. It just requires methods and provides a uniform interface for the workbook package. Additional attributes and methods provided by the sub modules may be available to the instance but are not in the strictest sence required.

To use the general package for excel parsing out of the box please review the documentation for Workbooks , Worksheets , and Cells

Methods

These are the methods required by this interface. Links to the default implementation of each method are provided but any customization of the formatter instance for workbook parsing will as a minimum require this module (role/interface) which will require these methods.

parse_excel_format_string( $string, $name )

get_defined_conversion( $position )

set_target_encoding( $encoding )

get_target_encoding

has_target_encoding

change_output_encoding( $string )

get_excel_region

set_defined_excel_formats( %args )

set_cache_behavior( $Bool )

set_date_behavior( $Bool )

set_european_first( $Bool )

set_workbook_inst( $instance )

SUPPORT

TODO

    1. Attempt to merge _split_decimal_integer and _integer_and_decimal

AUTHOR

Jed Lund
jandrew@cpan.org

COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

This software is copyrighted (c) 2014, 2015 by Jed Lund

DEPENDENCIES

SEE ALSO