Initial Commit
This commit is contained in:
215
database/perl/vendor/lib/Spreadsheet/ParseExcel/FmtJapan.pm
vendored
Normal file
215
database/perl/vendor/lib/Spreadsheet/ParseExcel/FmtJapan.pm
vendored
Normal file
@@ -0,0 +1,215 @@
|
||||
package Spreadsheet::ParseExcel::FmtJapan;
|
||||
use utf8;
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Spreadsheet::ParseExcel::FmtJapan - A class for Cell formats.
|
||||
#
|
||||
# Used in conjunction with Spreadsheet::ParseExcel.
|
||||
#
|
||||
# Copyright (c) 2014 Douglas Wilson
|
||||
# Copyright (c) 2009-2013 John McNamara
|
||||
# Copyright (c) 2006-2008 Gabor Szabo
|
||||
# Copyright (c) 2000-2006 Kawai Takanori
|
||||
#
|
||||
# perltidy with standard settings.
|
||||
#
|
||||
# Documentation after __END__
|
||||
#
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Encode qw(find_encoding decode);
|
||||
use base 'Spreadsheet::ParseExcel::FmtDefault';
|
||||
our $VERSION = '0.65';
|
||||
|
||||
my %FormatTable = (
|
||||
0x00 => 'General',
|
||||
0x01 => '0',
|
||||
0x02 => '0.00',
|
||||
0x03 => '#,##0',
|
||||
0x04 => '#,##0.00',
|
||||
0x05 => '(\\#,##0_);(\\#,##0)',
|
||||
0x06 => '(\\#,##0_);[Red](\\#,##0)',
|
||||
0x07 => '(\\#,##0.00_);(\\#,##0.00_)',
|
||||
0x08 => '(\\#,##0.00_);[Red](\\#,##0.00_)',
|
||||
0x09 => '0%',
|
||||
0x0A => '0.00%',
|
||||
0x0B => '0.00E+00',
|
||||
0x0C => '# ?/?',
|
||||
0x0D => '# ??/??',
|
||||
|
||||
# 0x0E => 'm/d/yy',
|
||||
0x0E => 'yyyy/m/d',
|
||||
0x0F => 'd-mmm-yy',
|
||||
0x10 => 'd-mmm',
|
||||
0x11 => 'mmm-yy',
|
||||
0x12 => 'h:mm AM/PM',
|
||||
0x13 => 'h:mm:ss AM/PM',
|
||||
0x14 => 'h:mm',
|
||||
0x15 => 'h:mm:ss',
|
||||
|
||||
# 0x16 => 'm/d/yy h:mm',
|
||||
0x16 => 'yyyy/m/d h:mm',
|
||||
|
||||
#0x17-0x24 -- Differs in Natinal
|
||||
0x1E => 'm/d/yy',
|
||||
0x1F => 'yyyy"年"m"月"d"日"',
|
||||
0x20 => 'h"時"mm"分"',
|
||||
0x21 => 'h"時"mm"分"ss"秒"',
|
||||
|
||||
#0x17-0x24 -- Differs in Natinal
|
||||
0x25 => '(#,##0_);(#,##0)',
|
||||
0x26 => '(#,##0_);[Red](#,##0)',
|
||||
0x27 => '(#,##0.00);(#,##0.00)',
|
||||
0x28 => '(#,##0.00);[Red](#,##0.00)',
|
||||
0x29 => '_(*#,##0_);_(*(#,##0);_(*"-"_);_(@_)',
|
||||
0x2A => '_(\\*#,##0_);_(\\*(#,##0);_(*"-"_);_(@_)',
|
||||
0x2B => '_(*#,##0.00_);_(*(#,##0.00);_(*"-"??_);_(@_)',
|
||||
0x2C => '_(\\*#,##0.00_);_(\\*(#,##0.00);_(*"-"??_);_(@_)',
|
||||
0x2D => 'mm:ss',
|
||||
0x2E => '[h]:mm:ss',
|
||||
0x2F => 'mm:ss.0',
|
||||
0x30 => '##0.0E+0',
|
||||
0x31 => '@',
|
||||
|
||||
0x37 => 'yyyy"年"m"月"',
|
||||
0x38 => 'm"月"d"日"',
|
||||
0x39 => 'ge.m.d',
|
||||
0x3A => 'ggge"年"m"月"d"日"',
|
||||
);
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# new (for Spreadsheet::ParseExcel::FmtJapan)
|
||||
#------------------------------------------------------------------------------
|
||||
sub new {
|
||||
my ( $class, %args ) = @_;
|
||||
my $encoding = $args{Code} || $args{encoding};
|
||||
my $self = { Code => $encoding };
|
||||
if($encoding){
|
||||
$self->{encoding} = find_encoding($encoding eq 'sjis' ? 'cp932' : $encoding)
|
||||
or do{
|
||||
require Carp;
|
||||
Carp::croak(qq{Unknown encoding '$encoding'});
|
||||
};
|
||||
}
|
||||
return bless $self, $class;
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# TextFmt (for Spreadsheet::ParseExcel::FmtJapan)
|
||||
#------------------------------------------------------------------------------
|
||||
sub TextFmt {
|
||||
my ( $self, $text, $input_encoding ) = @_;
|
||||
if(!defined $input_encoding){
|
||||
$input_encoding = 'utf8';
|
||||
}
|
||||
elsif($input_encoding eq '_native_'){
|
||||
$input_encoding = 'cp932'; # Shift_JIS in Microsoft products
|
||||
}
|
||||
$text = decode($input_encoding, $text);
|
||||
return $self->{Code} ? $self->{encoding}->encode($text) : $text;
|
||||
}
|
||||
#------------------------------------------------------------------------------
|
||||
# FmtStringDef (for Spreadsheet::ParseExcel::FmtJapan)
|
||||
#------------------------------------------------------------------------------
|
||||
sub FmtStringDef {
|
||||
my ( $self, $format_index, $book ) = @_;
|
||||
return $self->SUPER::FmtStringDef( $format_index, $book, \%FormatTable );
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# CnvNengo (for Spreadsheet::ParseExcel::FmtJapan)
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Convert A.D. into Japanese Nengo (aka Gengo)
|
||||
|
||||
my @Nengo = (
|
||||
{
|
||||
name => '平成', # Heisei
|
||||
abbr_name => 'H',
|
||||
|
||||
base => 1988,
|
||||
start => 19890108,
|
||||
},
|
||||
{
|
||||
name => '昭和', # Showa
|
||||
abbr_name => 'S',
|
||||
|
||||
base => 1925,
|
||||
start => 19261225,
|
||||
},
|
||||
{
|
||||
name => '大正', # Taisho
|
||||
abbr_name => 'T',
|
||||
|
||||
base => 1911,
|
||||
start => 19120730,
|
||||
},
|
||||
{
|
||||
name => '明治', # Meiji
|
||||
abbr_name => 'M',
|
||||
|
||||
base => 1867,
|
||||
start => 18680908,
|
||||
},
|
||||
);
|
||||
|
||||
# Usage: CnvNengo(name => @tm) or CnvNeng(abbr_name => @tm)
|
||||
sub CnvNengo {
|
||||
my ( $kind, @tm ) = @_;
|
||||
my $year = $tm[5] + 1900;
|
||||
my $wk = ($year * 10000) + ($tm[4] * 100) + ($tm[3] * 1);
|
||||
#my $wk = sprintf( '%04d%02d%02d', $year, $tm[4], $tm[3] );
|
||||
foreach my $nengo(@Nengo){
|
||||
if( $wk >= $nengo->{start} ){
|
||||
return $nengo->{$kind} . ($year - $nengo->{base});
|
||||
}
|
||||
}
|
||||
return $year;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Spreadsheet::ParseExcel::FmtJapan - A class for Cell formats.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
See the documentation for Spreadsheet::ParseExcel.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This module is used in conjunction with Spreadsheet::ParseExcel. See the documentation for Spreadsheet::ParseExcel.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Current maintainer 0.60+: Douglas Wilson dougw@cpan.org
|
||||
|
||||
Maintainer 0.40-0.59: John McNamara jmcnamara@cpan.org
|
||||
|
||||
Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
|
||||
|
||||
Original author: Kawai Takanori kwitknr@cpan.org
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2014 Douglas Wilson
|
||||
|
||||
Copyright (c) 2009-2013 John McNamara
|
||||
|
||||
Copyright (c) 2006-2008 Gabor Szabo
|
||||
|
||||
Copyright (c) 2000-2006 Kawai Takanori
|
||||
|
||||
All rights reserved.
|
||||
|
||||
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user