我是一个使用perl-cgi的html编程的新手,我想通过网页导入一个excel文件。我正在使用perl的Spreadsheet :: ParseExcel模块,代码是:
if($fileName) {
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($fileName);
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 $cell->value() ,"|" ;
#print "Unformatted = ", $cell->unformatted(), "\n";
}
print "\n";
}
}
}
这里fileName变量是我从HTML表单输入的excel文件的名称,其代码为:
<form id='form1' method='GET' action='#'>
<input id='fileSelect' name='file' type='file' accept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'>
<input type=submit value='submit'>
</form>
我已经将这个服务器端代码写在linux中的/ a / b / c目录中,并且在该目录中我已经复制了文件xyz.xls.So每当我通过web加载文件xyz.xls时,我获得结果,如果我加载另一个文件说pqr.xls不在目录/ a / b / c,我有这个错误文件找不到。但我想从使用此网页的用户导入任何文件
我被困在这里,请提出建议。
提前致谢
答案 0 :(得分:0)
您的perl代码看起来不错。但你的表格应该是
method="post" enctype="multipart/form-data"
除非你在客户端使用javascript创建一个FromData对象并通过ajax发送它。
另外,如何处理服务器端发送的文件还不是很清楚。