使用 php 将 Excel 导入 SQL 数据库

Import Excel into SQL database using php

我到处寻找这段代码,但大多数都是专用的或只是有错误并且 none 工作。

我想使用 php 代码将 Excel 文件导入我的 sql 数据库。到目前为止,我已经尝试了超过 5 个代码和插件(在 github 中),但最后一个代码的结果最好,但仍然不起作用。

$file = "../uploads/".$newfilename;
//echo $file;
$file_open = fopen($file,"r");
while(($csv = fgetcsv($file_open, 1000, ";")) !== false)
{
    $data = array_map("utf8_encode", $csv);
    print_r($data);
    $name = $csv[0];
    $pro_name = $csv[0];
    $brand = $csv[0];
    $tell = $csv[0];
    try{
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $db->prepare("INSERT INTO companies 
            (company_name, pro_name, brand, tell)
            VALUES(:a1, :a2, :a3, :a4)");
        $stmt->bindparam(':a1',$name);
        $stmt->bindparam(':a2',$pro_name);
        $stmt->bindparam(':a3',$brand);
        $stmt->bindparam(':a4',$tell);
        $stmt->execute();
        echo 'done';
    }catch(PDOException $e){
        //echo "error";
    }
}

这段代码的结果是这样的:

Array
(
    [0] => PK!ª÷X¤z[Content_Types].xml ¢( ÌTÉjÃ0½úF×+I¡'.Ç6ôklØÐLÒäï
    [1] => vJÈi ½ØØÒ¼eyѪ*£%4Î&¢wE6uÚØ<ӷΣժt±£áíÍ`ºöW[LDAä¤Ä´Jaì<X>É\¨ñgÈ¥Wé\å ûÝîL%°Ô¡C/©EIÑëoÌÑóæ^Må}iRE,T.­> é¸,3)h.*ÑPªÊØÃaDl<Ê Äv¤[W1W6°0ïØú   úä´«mÝ#
ÑXzW{«R~¹097Ï´mMÓ¢¸RÆîtáo.£l^½+©ý5À-uôÿû?ÒA¼s çïGÒÀ\Òº¼²Û
è%æBÐâmί.à'ö91ãà<rhß]dÔÕÏ@ÈÀ>4-ß#°=áA0B±ônÙdúðÿÿPK!µU0#õL_rels/.rels ¢( 
)

我也删除了这一行:$data = array_map("utf8_encode", $csv); 但没有任何区别。

(注意:我必须使用utf8 unidcode,因为我有波斯语单词需要写入数据库!)

有什么解决办法吗?

  1. 您使用 fgetcsv,因此您假设给定的 excel 文件格式为 CSV。
  2. "result"(实际上来自您的 print_r($data); 语句,所以它不是任何结果),表明该文件是压缩的 XML,可能为 .xlsx 格式。

仅从以上 2 点来看,您当前的 "looking for existing solution written by others" 方法 (*) 可能需要改进。获得一个合适的 Excel 库(例如 PhpSpreadsheet),阅读并理解其文档以便能够将其用于您的特定需求。最重要的是,尽量自己写,不要从网上复制粘贴你不理解的代码。

(*) 我说的是这两句话:

I looked everywhere for this code but most of them are dedicated or just have errors and none work.

Till now I have tried over 5 codes and plugins (in github) but last code has best result but still doesn't work.

我终于找到了一个有完整文档和描述的网站。简单来说,解决方案是将 excel (.xlsx) 文件转换为 XML (.xml) 文件,然后使用简单的代码将其导入。 https://www.ibm.com/developerworks/library/os-phpexcel/index.html