使用 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,因为我有波斯语单词需要写入数据库!)
有什么解决办法吗?
- 您使用
fgetcsv
,因此您假设给定的 excel 文件格式为 CSV。
- "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
我到处寻找这段代码,但大多数都是专用的或只是有错误并且 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,因为我有波斯语单词需要写入数据库!)
有什么解决办法吗?
- 您使用
fgetcsv
,因此您假设给定的 excel 文件格式为 CSV。 - "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