上载的Excel文件如何更新Oracle数据库?

时间:2014-06-30 16:31:43

标签: php excel oracle

我有一个Oracle 11g数据库,正在与PHP文件进行通信。我希望我网站上的用户能够上传.xls文档,其单元格值将传递给数据库中的变量。

我想我会让用户通过基本的html表单上传.xls,这似乎是最简单的。如何从上传的.xls文件中获取数据以更新数据库?

注意:可能必须忽略前几行,因为它们将是标题/标题。如何让程序忽略这些?

示例表:

TITLES AND OTHER HEADERS - Probably 2-3 rows of cells
Header1 | Header2 | Header3 | Header4 | Header5 | Header6 | Header7 | Header8 
value1  | value2  | value3  | value4  |  value5 | value6  | calue7  | value8
...
valueN  | valueN  | valueN  | valueN  |  valueN |  valueN | valueN  | valueN 

我目前的代码:

形式:

   <?php require "reader.php";
 ?>


<form name="SLCCA" action="update_handler2.php" method="post">


   <u>GF:</u> <input type="file" name="xls_doc"><br>


   <input type="submit" value="Submit">

表单处理程序:

   <?php

    $xls_doc=$_POST["xls_doc"];

    $objConnect = oci_connect("user", "pass", "(description=(address=(protocol=tcp)(host=hostaddress.com)(port=1533))(connect_data=(service_name=sid)))");

require_once('reader.php');
?>

<?php

    $reader=new Spreadsheet_Excel_Reader();
    $reader->setUTFEncoder('iconv');
    $reader->setOutputEncoding('UTF-8');
    $reader->read($xls_doc);

    $strSQL = "LOAD DATA
    INFILE 'xls_doc.dat'
    BADFILE 'xls_doc.bad'
    DISCARDFILE 'xls_doc.dsc'
    APPEND
    INTO TABLE INTOXDM.LCCR";

    $objParse = oci_parse($objConnect, $strSQL);
    $objExecute = oci_execute($objParse);

?>

1 个答案:

答案 0 :(得分:1)

首先,convert the XLS to csv

$reader=new Spreadsheet_Excel_Reader();
$reader->setUTFEncoder('iconv');
$reader->setOutputEncoding('UTF-8');
$reader->read($filename);

现在使用SQL*Loader阅读:

LOAD DATA
INFILE 'my_file.dat'
BADFILE 'my_file.bad'
DISCARDFILE 'my_file.dsc'
APPEND
INTO TABLE my_table

如果您还有其他问题,请发表评论。