繁体   English   中英

使用php将Excel导入SQL数据库

[英]Import Excel into SQL database using php

我到处都在寻找该代码,但是其中大多数是专用的,或者只是有错误,没有任何作用。

我想使用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. “结果”(实际上来自您的print_r($data);语句,因此无论如何都不是结果),表明该文件是压缩的XML,很可能是.xlsx格式。

从以上两点来看,您当前的“寻找别人编写的现有解决方案”方法(*)可能需要改进。 获取适当的Excel库(例如PhpSpreadsheet ),阅读并理解其文档,以便能够将其用于您的特定需求。 最重要的是,尝试自己编写,不要复制从狂野的网络中不了解的粘贴代码。

(*)我在谈论这两个句子:

我到处这个代码,但其中大部分都是专用的或只是有错误,没有工作。

到目前为止,我已经尝试了5种代码和插件(在github中),但是最后的代码效果最好,但是仍然无法正常工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM