首页 > Linux操作系统 > Linux操作系统 > perl读写excel文档
use Spreadsheet::WriteExcel; #用于写excel
use Spreadsheet::ParseExcel; #用于读excel
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $excel_log_name = sprintf("charahistory_log_%04d%02d%02d%02d%02d%02d.xls", $year + 1900, $mon +1, $mday, $hour, $min, $sec);
$workbook = Spreadsheet::WriteExcel->new($excel_log_name); #创建excel
$worksheet = $workbook->add_worksheet('Chara Action History');
$worksheet->set_column('A:A', 16); #设置单元格宽度
$workbook->set_custom_color(20,'#ffffff') #自定义颜色,数字范围8~63,一个数字只能对应一种颜色
my $format = $workbook->add_format(); #定义一种格式
$format->set_bold(); #黑体
$format->set_border(1); #边框
$format->set_align('center'); #对齐方式
$format->set_font('Times New Roman');
$format->set_size(25); #字体大小
$format->set_color('red'); #字体颜色
$format->set_bg_color(20); #使用自定义颜色
$worksheet->write($row, $col, "---", $format); #写入excel,使用上面定义的格式
$worksheet->write('A6', \@header, $format); #数组整个写入
当写入的文字显示为乱码时,需要对字符转码再写入
eval "use Encode;";
sub convert_charset_to_excel
{
my $original_data = $_[0]; #需转码文字
my $from_charset = get_charset(); #文字原来编码
my $to_charset = 'Unicode'; #excel中使用编码
my $data = $original_data;
if ($data eq undef) {
return undef;
}
Encode::from_to($data, $from_charset, $to_charset);
return $data;
}
$worksheet->write($row, $col, &convert_charset_to_excel("中文"), $format);
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/677997/viewspace-664898/ ,如需转载,请注明出处,否则将追究法律责任。