TShopping

 找回密碼
 註冊
搜索
查看: 30285|回復: 39
打印 上一主題 下一主題

[教學] PHPExcel 資料匯入MYSQL 資料庫(excel 2003 2007都能用)

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2011-11-14 00:02:55 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
需要LINUX元件
  • php-zip
  • php-xml
  • php-xmlrpc


筆者再使用PHPExcel 時,爬了很多文章,問題就卡在於
有的能用EXCEL 2003,有的能用EXCEL 2007
就是不能同時使用,所以筆者修改了些程式語法

首先建立global.php檔案
  1. <?php
  2. $mydbhost = "localhost";
  3. $mydbuser = "root";
  4. $mydbpw = "12345678";
  5. $mydbname = "xxxxx";
  6. $mydbcharset = "UTF8";
  7. $db = @mysql_connect($mydbhost,$mydbuser,$mydbpw);
  8. if (!$db) {
  9.         exit('Unable connect MYSQL at this time');
  10. }
  11. if (!@mysql_select_db($mydbname)) {
  12.         exit ('Unable connect DB at this time');
  13. }
  14. mysql_query("SET NAMES $mydbcharset", $db);
  15. ?>
複製代碼
建立test1.php檔案
  1. <?php
  2. include_once ('global.php');
  3. if (isset($_POST["send"])) {
  4. $leadExcel=$_POST["leadExcel"];;

  5. if($leadExcel == "true"){

  6. //獲取上傳的文件名
  7. $filename = $_FILES['inputExcel']['name'];

  8. //上傳到服務器上的臨時文件名
  9. $tmp_name = $_FILES['inputExcel']['tmp_name'];
  10. $msg = uploadFile($filename,$tmp_name);
  11. }
  12. }
  13. if (isset($_POST["clear"])) {
  14. $sql = "TRUNCATE TABLE net_mailuser";
  15. if(!mysql_query($sql)){
  16. return false;
  17. }
  18. echo '<script>alert(\'電子報會員資料已清空!\');window.location=\'test1.php\';</script>';
  19. }
  20. ?>

  21. <form name="form2" method="post" action="<?php $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
  22. <input type="hidden" name="leadExcel" value="true">
  23. <table align="center" width="90%" border="0">
  24. <tr>
  25. <td>
  26. <input type="file" name="inputExcel"><input type="submit" value="上傳" name="send">
  27. </td>
  28. </tr>
  29. <tr>
  30. <td>
  31. <input type="submit" value="清空電子報會員資料" name="clear">
  32. </td>
  33. </tr>
  34. </table>
  35. </form>


  36. <?
  37. //導入Excel文件
  38. function uploadFile($file,$filetempname) {
  39. //自己設置的上傳文件存放路徑
  40. $filePath = 'uploads/';
  41. $str = "";

  42. require_once("PHPExcel/IOFactory.php");

  43. $filename=explode(".",$file);//把上傳的文件名以「.」好為準做一個數組。
  44. $time=date("y-m-d-H-i-s");//去當前上傳的時間
  45. $filename[0]=$time;//取文件名t替換
  46. $name=implode(".",$filename); //上傳後的文件名
  47. $uploadfile=$filePath.$name;//上傳後的文件名地址

  48. //move_uploaded_file() 函數將上傳的文件移動到新位置。若成功,則返回 true,否則返回 false。
  49. $result=move_uploaded_file($filetempname,$uploadfile);//假如上傳到當前目錄下
  50. if($result) { //如果上傳文件成功,就執行導入excel操作

  51. $objPHPExcel = PHPExcel_IOFactory::load($uploadfile);
  52. $objPHPExcel->setActiveSheetIndex(0);
  53. $sheet = $objPHPExcel->getActiveSheet();
  54. $highestRow = $sheet->getHighestRow(); // 取得總行數
  55. $highestColumn = $sheet->getHighestColumn(); // 取得總列數

  56. //循環讀取excel文件,讀取一條,插入一條
  57. for($j=2;$j<=$highestRow;$j++){
  58. for($k='A';$k<=$highestColumn;$k++){
  59. $str .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';
  60. //讀取單元格
  61. }
  62. //explode:函數把字符串分割為數組。
  63. $strs = explode("\\",$str);
  64. $sql = "INSERT INTO net_mailuser(name,email,phone,cell,address,qa,ps,psname) VALUES('$strs[0]','$strs[1]','$strs[2]','$strs[3]','$strs[4]','$strs[5]','$strs[6]','$strs[7]')";
  65. if(!mysql_query($sql)){
  66. return false;
  67. }
  68. $str = "";
  69. }

  70. unlink($uploadfile); //刪除上傳的excel文件
  71. echo '<script>alert(\'匯入完成!\');window.location=\'test1.php\';</script>';
  72. }else{
  73. echo '<script>alert(\'匯入失敗!\');window.location=\'test1.php\';</script>';
  74. }
  75. }
  76. ?>
複製代碼
資料庫欄位設置
  1. CREATE TABLE IF NOT EXISTS `net_mailuser` (
  2.   `id` int(5) NOT NULL auto_increment,
  3.   `name` char(255) default NULL,
  4.   `email` char(255) default NULL,
  5.   `phone` char(255) default NULL,
  6.   `cell` char(255) default NULL,
  7.   `address` char(255) default NULL,
  8.   `qa` varchar(255) default NULL,
  9.   `ps` varchar(255) default NULL,
  10.   `psname` varchar(255) default NULL,
  11.   PRIMARY KEY  (`id`)
  12. );
複製代碼

目前都已測試成功,如果有問題可在下面回文
phpExcelReader.zip (21.02 KB, 下載次數: 68, 售價: 10 金T幣)

 

臉書網友討論
2#
 樓主| 發表於 2013-9-12 18:28:06 | 顯示全部樓層
YanLongChen 發表於 2013-9-12 17:54
表單按鈕的值是亂碼,且好像無法匯入mysql?

這已經測試成功的程式
按鈕亂碼請改網頁編碼
多測試幾次就OK了

版主招募中

3#
 樓主| 發表於 2013-9-13 18:37:45 | 顯示全部樓層
333不是跟目錄阿 www 才是跟目錄


4#
 樓主| 發表於 2013-9-13 23:15:07 | 顯示全部樓層
333資料夾拿掉 直接用PHPExcel COPY到跟目錄及可


5#
 樓主| 發表於 2013-9-14 22:37:09 | 顯示全部樓層
$filePath 是你EXCEL檔案上傳目錄
PHPEXCEL放的位置
49.require_once("PHPExcel/IOFactory.php");

這段有說

所以你根本搞錯


6#
 樓主| 發表於 2013-9-15 11:19:16 | 顯示全部樓層
這樣當然不行,PHPEXCEL的模組只需一行引入即可,
如 require_once("PHPExcel/IOFactory.php");
其他程式放在非PHPEXCEL目錄


7#
 樓主| 發表於 2013-9-15 23:04:52 | 顯示全部樓層
YanLongChen 發表於 2013-9-15 22:29
還是不行...難道是PHPEXCEL版本太新,還是我載錯了...
我的程式碼請看一下,到底是哪裡有錯?
網址:https:// ...


WWW檔案直接放在網頁跟目錄下即可



8#
 樓主| 發表於 2013-9-16 13:01:49 | 顯示全部樓層
把它註解就好了  剩下就看你怎麼寫了~
這樣代表PHPEXCEL已經正確引入了


9#
 樓主| 發表於 2013-9-16 17:32:55 | 顯示全部樓層
YanLongChen 發表於 2013-9-16 14:55
感謝Woff的幫忙。

不客氣~


10#
 樓主| 發表於 2013-9-16 23:55:00 | 顯示全部樓層
我給你個檔案 你慢慢改 那檔案很大



excelinto.php

4.6 KB, 下載次數: 131

*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-6 08:56 , Processed in 0.085502 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表