perl 导出导入 excel
发布时间:2020-12-16 00:20:46 所属栏目:大数据 来源:网络整理
导读:记下来自己的一个样例: 在 2003中测试过了OK ??? use utf8;use Win32::OLE qw(in with);use Win32::OLE::Variant;use Win32::OLE::Const "Microsoft Excel";use Encode;my $Encode = "GBK";my $Columns = [{col='A',title='name',value_field='a'},{col='B'
|
??? use utf8;
use Win32::OLE qw(in with);
use Win32::OLE::Variant;
use Win32::OLE::Const "Microsoft Excel";
use Encode;
my $Encode = "GBK";
my $Columns = [
{
col=>'A',title=>'name',value_field=>'a'
},{
col=>'B',title=>'age',value_field=>'b',},{
col=>'C',title=>'sex',value_field=>'c',{
col=>'D',title=>'address',value_field=>'d',{
col=>'E',title=>'phone',value_field=>'e',];
my $data = [
{a=>'菠菜',b=>'b',c=>'c',d=>'d',e=>'e'},{a=>'1',b=>'2',c=>'3',d=>'4',e=>'5'},{a=>'a',];
my $excel = Win32::OLE->new('Excel.Application');
$excel->{Visible} = 1;
$excel->{DisplayAlerts} = 0;
my $wb = $excel->Workbooks->Add();
$wb->{Visible} = 1;
my $ws = $wb->Sheets(1);
$ws->Select;
#绘制标题
my $range = $ws->Range($Columns->[0]->{col}.'1'.':'.$Columns->[-1]->{col}.'1');
$range->{HorizontalAlignment} = xlCenter;
$range->{Font}->{Bold} = True;
$range->{Font}->{ColorIndex} = 2;
$range->{Interior}->{ColorIndex} = 10;
foreach my $column (@$Columns){
$ws->Range($column->{col}.1)->{'Value'} = encode($Encode,$column->{title});
}
#填充数据
my $row = 2;
foreach my $item (@$data){
foreach my $column (@$Columns){
$ws->Range($column->{col}.$row)->{'Value'} = encode($Encode,$item->{$column->{value_field}});
}
$row++;
}
#~~~~~~~
my $fill_range = $ws->Range('A1:E5');
$fill_range->{Columns}->AutoFit();
$fill_range->{Rows}->AutoFit();
foreach my $edge (xlInsideHorizontal,xlInsideVertical,xlEdgeTop,xlEdgeBottom,xlEdgeRight,xlEdgeLeft) {
with ($fill_range->Borders($edge),LineStyle =>xlContinuous,Weight => xlThin,ColorIndex => 1);
}
2012-07霸气外露的更新:$ws->Range('A1:'.["A".."ZZ"]->[$ws->{UsedRange}->{Columns}->{Count}-1].$ws->{UsedRange}->{Rows}->{Count}); NB
#!/usr/bin/perl -w
use strict;
use utf8;
use Win32::OLE qw(in with);
use Win32::OLE::Variant;
use Win32::OLE::Const "Microsoft Excel";
use Encode;
use Data::Dump 'dump';
my $Encode = "GBK";
my $CFG = {
start_row=>2,col_map_key=>{
A=>'name',B=>'age',};
my $excel = Win32::OLE->new('Excel.Application');
$excel->{Visible} = 1;
$excel->{DisplayAlerts} = 0;
my $wb = $excel->Workbooks->Open("D:/aaa.xls") or die "open excel failed $!";
my $ws = $wb->Sheets(1);
$ws->Select;
my $excel_data;
foreach my $row ($CFG->{start_row}..$ws->{UsedRange}->{Rows}->{Count}){
my $line;
foreach my $col (keys %{$CFG->{col_map_key}}){
$line->{$CFG->{col_map_key}->{$col}} = encode("utf8",decode($Encode,$ws->Range($col.$row)->{'Value'}));
}
push @{$excel_data},$line;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
