用perl操作excel表格
想从1.xls中提取A列的数据,2.xls中提取A列的数据,做减法后输出3.xls中。怎么写perl程序呢?...
想从1.xls中提取A列的数据,2.xls中提取A列的数据,做减法后输出3.xls中。怎么写perl程序呢?
展开
3个回答
展开全部
# 创建一个新的EXCEL文件
my $workbook = Spreadsheet::WriteExcel->new('test.xls');
# 添加一个工作表
$worksheet = $workbook->add_worksheet();
# 新建一个样式
$format = $workbook->add_format(); # Add a format
$format->set_bold();#设置字体为粗体
$format->set_color('red');#设置单元格前景色为红色
$format->set_align('center');#设置单元格居中
#使用行号及列号,向单元格写入一个格式化和末格式化的字符串
$col = 1;
$row = 2;
$worksheet->write($row, $col, 'Hi Excel!', $format);
$worksheet->write( $col-1, $row-1 , 'Hi Excel!');
$worksheet->write(1, $col, 'Hi Excel!');
#使用单元格名称(例:A1),向单元格中写一个数字。
$worksheet->write('A3', 1.2345);
$worksheet->write('A4', '=SIN(PI()/4)');
exit;
在网上找到了demo代码,需要安装相关的包,在winddows下,
cmd模式,ppm,安装Spreadsheet-WriteExcel包。
PS:如果碰到中文写入时乱码问题,要ppm 安装Unicode_Map包,按照如下方法使用
use Unicode::Map();
my $Map = new Unicode::Map("GB2312");
my $abc='你好!';
$worksheet->write_unicode($LineCount, 1, $Map->to_unicode( $abc));
这样就可以了。
my $workbook = Spreadsheet::WriteExcel->new('test.xls');
# 添加一个工作表
$worksheet = $workbook->add_worksheet();
# 新建一个样式
$format = $workbook->add_format(); # Add a format
$format->set_bold();#设置字体为粗体
$format->set_color('red');#设置单元格前景色为红色
$format->set_align('center');#设置单元格居中
#使用行号及列号,向单元格写入一个格式化和末格式化的字符串
$col = 1;
$row = 2;
$worksheet->write($row, $col, 'Hi Excel!', $format);
$worksheet->write( $col-1, $row-1 , 'Hi Excel!');
$worksheet->write(1, $col, 'Hi Excel!');
#使用单元格名称(例:A1),向单元格中写一个数字。
$worksheet->write('A3', 1.2345);
$worksheet->write('A4', '=SIN(PI()/4)');
exit;
在网上找到了demo代码,需要安装相关的包,在winddows下,
cmd模式,ppm,安装Spreadsheet-WriteExcel包。
PS:如果碰到中文写入时乱码问题,要ppm 安装Unicode_Map包,按照如下方法使用
use Unicode::Map();
my $Map = new Unicode::Map("GB2312");
my $abc='你好!';
$worksheet->write_unicode($LineCount, 1, $Map->to_unicode( $abc));
这样就可以了。
展开全部
use strict;
use Spreadsheet::Read;
use Spreadsheet::Write; # 这两个 module 你可能要自己用 ppm / cpan 下载
my $data = {};
my @files = ( "1.xls" , "2.xls" ) ;
# 读取
my $index = 1;
foreach my $f ( @files ) {
my $xls = ReadData ( $f ) ;
my $sheet = $xls -> [1]; # 第一张工张表
$data->{$index} = [];
push @{$data->{$index}}, $sheet->{"A$_"} foreach ( 1.. $sheet->{maxrow} ) ;
$index++;
}
#写入
my $xls = Spreadsheet::WriteExcel->new( "3.xls" );
my $sheet = $xls -> add_worksheet ( 'HelloWorld!' ) ;
foreach my $row ( 0.. $#{$data->{1}} ) {
my $sum = $data->{1}[$row] - $data->{2}[$row] ;
$sheet -> write_row ( 0, $row, [ $sum ] ) ;
}
use Spreadsheet::Read;
use Spreadsheet::Write; # 这两个 module 你可能要自己用 ppm / cpan 下载
my $data = {};
my @files = ( "1.xls" , "2.xls" ) ;
# 读取
my $index = 1;
foreach my $f ( @files ) {
my $xls = ReadData ( $f ) ;
my $sheet = $xls -> [1]; # 第一张工张表
$data->{$index} = [];
push @{$data->{$index}}, $sheet->{"A$_"} foreach ( 1.. $sheet->{maxrow} ) ;
$index++;
}
#写入
my $xls = Spreadsheet::WriteExcel->new( "3.xls" );
my $sheet = $xls -> add_worksheet ( 'HelloWorld!' ) ;
foreach my $row ( 0.. $#{$data->{1}} ) {
my $sum = $data->{1}[$row] - $data->{2}[$row] ;
$sheet -> write_row ( 0, $row, [ $sum ] ) ;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Win32::ole这个模块可以直接操作Excel
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询