我是perl的新手。我需要阅读excel文件并插入数据库..这是我的试用代码:
#!/usr/bin/perl -w
use DBI;
use warnings;
my $dbh = DBI->connect("DBI:mysql:database=afscp;host=135.75.60.120; mysql_socket=/var/lib/mysql/mysql.sock","blrdev_rw","W.mZk8", {'RaiseError' => 1});
my $insert_table_2= $dbh->prepare(q{INSERT INTO employee_perl (emp_id,first_nm,last_nm,team_code) VALUES (?, ?,?,?)}) or die $dbh->errstr;
open (FILE, "Excel/Book1.xls") or die "Couldn't read file: $!";
while (<FILE>)
{
chomp;
my @fields = split(',', $_);
my $emp_id = shift(@fields);
my $fname = shift(@fields);
my $lname = shift(@fields);
my $team_code = shift(@fields);
$insert_table_2->execute($emp_id,$fname,$lname,$team_code) or die $dbh->errstr;
}
close (FILE);
$dbh->disconnect();
答案 0 :(得分:1)
CPAN模块Spreadsheet::ParseExcel
是您阅读Excel的朋友。
来自doc:
#!/usr/bin/perl -w
use strict;
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('Book1.xls');
if ( !defined $workbook )
{
die $parser->error(), ".\n";
}
for my $worksheet ( $workbook->worksheets() )
{
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for my $row ( $row_min .. $row_max )
{
for my $col ( $col_min .. $col_max )
{
my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;
print "Row, Col = ($row, $col)\n";
print "Value = ", $cell->value(), "\n";
print "Unformatted = ", $cell->unformatted(), "\n";
print "\n";
}
}
}
答案 1 :(得分:0)
您可能会从CPAN分享的良好工作中受益:enter link description here。如果您使用的是GNU / Linux操作系统,您可以检查哪些模块可用作已编译的软件包(例如,您可以使用aptitude或emerge或MacPorts进行安装)。
此外,您还需要考虑Excel是支持多种电子表格格式的软件,每种格式都有多个版本。
在某些业务场景中,您可以考虑将电子表格连接到某个RDBMS服务器,以便excel文件变成共享数据存储的前端。