summaryrefslogtreecommitdiff
path: root/httemplate/search/elements/search-xls.html
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-05-02 14:16:20 -0700
committerMark Wells <mark@freeside.biz>2013-05-02 14:16:20 -0700
commitcc839bbae9c4615a5d3d2b0c7edcfb0bae58b0ec (patch)
tree9f47269e9e839b9c0adebb895fb97e555ed1e90b /httemplate/search/elements/search-xls.html
parent7280c02bfea0defe3bec909e2de8a69c175ef61f (diff)
excel download fixes, #21937, #20337, etc.
Diffstat (limited to 'httemplate/search/elements/search-xls.html')
-rw-r--r--httemplate/search/elements/search-xls.html25
1 files changed, 24 insertions, 1 deletions
diff --git a/httemplate/search/elements/search-xls.html b/httemplate/search/elements/search-xls.html
index 26a51c4c7..bc844a579 100644
--- a/httemplate/search/elements/search-xls.html
+++ b/httemplate/search/elements/search-xls.html
@@ -6,6 +6,8 @@ my $header = $args{'header'};
my $rows = $args{'rows'};
my %opt = %{ $args{'opt'} };
+my $style = $opt{'style'};
+
my $override = scalar(@$rows) >= 65536 ? 'XLSX' : '';
my $format = $FS::CurrentUser::CurrentUser->spreadsheet_format($override);
@@ -42,6 +44,12 @@ my $header_format = $workbook->add_format(
bg_color => 55, #22,
bottom => 3,
);
+my $footer_format = $workbook->add_format(
+ italic => 1,
+ locked => 1,
+ bg_color => 55,
+ top => 3,
+);
my $default_format = $workbook->add_format(locked => 0);
my %money_format;
@@ -50,10 +58,24 @@ my $money_char = FS::Conf->new->config('money_char') || '$';
my %date_format;
xl_parse_date_init();
+my %bold_format;
+
my $writer = sub {
# Wrapper for $worksheet->write.
# Do any massaging of the value/format here.
my ($r, $c, $value, $format) = @_;
+ #warn "writer called with format $format\n";
+
+ if ( $style->[$c] eq 'b' or $value =~ /<b>/i ) { # the only one in common use
+ $value =~ s[</?b>][]ig;
+ if ( !exists($bold_format{$format}) ) {
+ $bold_format{$format} = $workbook->add_format();
+ $bold_format{$format}->copy($format);
+ $bold_format{$format}->set_bold();
+ }
+ $format = $bold_format{$format};
+ }
+
# convert HTML entities
# both Spreadsheet::WriteExcel and Excel::Writer::XLSX accept UTF-8 strings
$value = decode_entities($value);
@@ -86,6 +108,7 @@ my $writer = sub {
# String: replace line breaks with newlines
$value =~ s/<BR>/\n/gi;
}
+ #warn "writing with format $format\n";
$worksheet->write($r, $c, $value, $format);
};
@@ -140,7 +163,7 @@ if ( $opt{'footer'} ) {
if ( ref($item) eq 'CODE' ) {
$item = &{$item}();
}
- $writer->( $r, $c++, $item, $header_format );
+ $writer->( $r, $c++, $item, $footer_format );
}
}