问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于用perl提取文件导入到excel中

发布网友 发布时间:2022-04-12 20:09

我来回答

2个回答

热心网友 时间:2022-04-12 21:38

一.关于 Spreadsheet::Read 模块的用法 ,可以读取xls,csv和sxc等格式的文件,方法如下
#!/usr/bin/perl
use Spreadsheet::Read;
my $file = 'd:/Book1.xls'; #需要处理的文件
my $spreadsheet = ReadData ($file) or die "$!";
my $sheet_count = $spreadsheet->[0]{sheets} or die "No sheets in $file\n"; #记录有几个sheet

for my $sheet_index (1 .. $sheet_count)
{
$sheet = $spreadsheet->[$sheet_index] or next;
printf("%s - %2d: [%-s] %3d Cols, %5d Rows\n",
$file,$sheet_index,$sheet->{label},$sheet->{maxcol},$sheet->{maxrow});
for my $row (1 .. $sheet->{maxrow}) {
print join "\t" => map {$sheet->{cell}[$_][$row] // "-" } 1 .. $sheet->{maxcol};
print "\n"
};
}

1.这个程序是将数据以行的形式进行的读取,这样也使得文件可以轻松转换成txt文件
2.其中 有行的程序为:
print join "\t" => map {$sheet->{cell}[$_][$row] // "-" } 1 .. $sheet->{maxcol};
// 表示为 defined-or,是使用了perl 6的方法,即如果在取值的地方取到空值,几没有取到值,则用 - 标识这个地方.
这个代码块也能换成
print join "\t" => map {
my $data = $sheet->{cell}[$_][$row] defined $data ? $data : "-";
}1 .. $sheet->{maxcol};

二.关于 Spreadsheet::ParseExcel的用法

#!/usr/bin/perl
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::Workbook;

my $excel = Spreadsheet::ParseExcel::Workbook->Parse("d:/Book1.xls" );
foreach my $sheet (@{$excel->{Worksheet}}) {
printf ("Sheet: %s\n", $sheet->{Name});
$sheet->{MaxRow} ||= $sheet->{MinRow};
foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {
$sheet->{MaxCol} ||= $sheet->{MinCol};
foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) {
my $cell = $sheet->{Cells}[$row][$col];
if ($cell) {
printf("( %s , %s ) => %s\n", $row, $col, $cell->{Val});

}
}
}
}
1.以hash结构的方式读出数据

热心网友 时间:2022-04-12 22:56

你的signals是一个hash?先把代码给你。

#!/usr/bin/env perl

use strict;
use warnings;
use IO::File;
use Spreadsheet::WriteExcel;

use Data::Dump;

my $fhi = IO::File->new("<in.txt");

# Create a new workbook called simple.xls and add a worksheet
my $workbook = Spreadsheet::WriteExcel->new('simple.xls');
my $worksheet = $workbook->add_worksheet();

# The general syntax is write($row, $column, $token). Note that row and
# column are zero indexed
#
# Write some text
#$worksheet->write(0, 0, "Hi Excel!");

my $i = 0;

while (<$fhi>) {
my @data;
my $j = 0;
if (/^.+;$/) {
@data = split ' ', $_;

#Data::Dump->mp(@data);
$worksheet->write( $i, $j, $data[0] );
$worksheet->write( $i, $j + 1, $data[1] );
$i++;
}
}

$fhi->close();

我把你给的数据放在in.txt里了。
执行的时候,perl t.pl in.txt 就OK了。不过你可能需要装一些perl模块。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
墨兰烂根是怎么回事 墨兰烂根后如何养护 谢绝推销参观拍照摄影看房预约 看房子为什么不让拍照 执业药师各科考试时间分配 执业药师考试倒计时100天,怎样备考最有效 中药执业药师怎么备考? 手机拒绝所有来电了怎么设置回来 美国狼人在伦敦演职员表 美国狼人在伦敦幕后制作 美国狼人在伦敦制作发行 如果别人用微信给你发的图片你不小心删掉了,该怎么恢复过来 买平板电脑保护套 平板电脑的保护套不按型号买可以吗 ipad4保护套子与其它ipad的套子尺寸一样吗 两个手机号可以在同一手机上开通两个吗,怎么设置呢? 一部手机两个手机号怎么申请两个? 二个手机号可以注册两个吗? 怎样选合适的苹果平板保护套?怎样查看自己的平板是多大型号的? 一个手机怎么用两个电话号申请 双卡双待手机能注册两个吗?怎么注册第二个? 双卡双待手机能注册两个吗?怎么注册第二个? 一个人两个手机号,怎样注册两个? 支付宝的商户怎么开通信用卡支付 如何开通支付宝信用卡收款功能 支付宝收款怎么开通信用卡收款 支付宝怎么用信用卡收款 虎皮鹦鹉养殖技术去哪里可以学到啊? 有没有做虎皮鹦鹉繁殖场的朋友?需要投入的资金以及技术管理模式,请问有这方面的资料或者光碟吗? 你好,在哪里能买到真正虎皮鹦鹉幼鸟呀? 虎皮鹦鹉养殖问题 《望庐山瀑布》飞流直下三千尺的三千尺是什么意思 免疫性脑炎,是一种什么病,好不好治?我妹妹九岁得了免疫性脑炎,医生说不好治,但得慢慢治。 招牌要用什么名字好? 帮忙取个好的招牌名字,谢谢了, 店铺招牌名 电信大王卡9元套餐怎么办理 认证书000么意思 帮我去个好听的招牌名字 黄金认证书是什么样 CMA认证书编号后的字母是什么意思 ? iphone12闪存是ufs3.1吗 UFS3.0闪存,苹果手机11promax用的是这个吗? 苹果xs max的闪存是ufs3.0吗 凉拌紫甘蓝的功效 如何评价iPhone 6s用的是NVMe闪存?相比ufs2.0如何? 每代的iPhone的闪存规格算什么水平,与三星USF3.0有多大差距 苹果6s内存是emmc还是nvme 凉拌紫甘蓝的营养价值 兴业银行信用卡积分兑换的网站是什么? 怎么用CAD画变压器图纸?