加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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'


记下来自己的一个样例: 在 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',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	


?perl 导入Excel 包括中文也可以

#!/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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读