ITPub博客

首页 > Linux操作系统 > Linux操作系统 > perl读写excel文档

perl读写excel文档

原创 Linux操作系统 作者:chyf1983 时间:2010-06-10 14:49:35 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-06-09

  • 博文量
    8
  • 访问量
    9808