在Perl脚本中将表单文件读取到数据库中

时间:2015-02-06 14:03:46

标签: perl spreadsheet import-from-excel

我是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();

2 个答案:

答案 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文件变成共享数据存储的前端。