PHP上傳Excel檔案匯入資料到MySQL資料庫樣本_php執行個體

來源:互聯網
上載者:User

最近在做Excel檔案匯入資料到資料庫。網站如果想支援批量插入資料,可以製作一個上傳Excel檔案,匯入裡面的資料內容到MySQL資料庫的小程式。

要用到的工具:

ThinkPHP:輕量級國產PHP開發架構。可在ThinkPHP官網下載。

PHPExcel:Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標準和PHP語言。可在CodePlex官網下載。、

1.設計MySQL資料庫product

建立product資料庫

CREATE DATABASE product DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

建立pro_info表,表結構

CREATE TABLE pro_info(pId int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,pName varchar(20) NOT NULL,pPrice float NOT NULL,pCount float NOT NULL);

2.產生項目

先在ThinkPHP同級目錄下建立index.php檔案,產生項目Home.

<?php define('APP_NAME', 'Home');  //項目名稱define('APP_PATH', './Home/'); //項目路徑define('APP_DEBUG', true);   //開啟DEBUGrequire './ThinkPHP/ThinkPHP.php';  //引入ThinkPHP核心運行檔案?>

3.上傳檔案表單

在Home/Tpl檔案夾下建立Index檔案夾,裡面建立index.html檔案

<!DOCTYPE html> <html>  <head>    <title>上傳檔案</title>    <meta charset="UTF-8">  </head>  <body>    <form id="upload" action="__URL__/upload/" method="post" enctype="multipart/form-data">      <label for="file">上傳檔案:</label>      <input type="file" name="file" id="file"><br />      <input type="submit" name="submit" value="上傳" />    </form>  </body></html>

4.在/Home/Lib/Action/IndexAction.class.php中編寫顯示上傳表單頁面、上傳Excel檔案、匯入Excel檔案方法(如果ThinkPHP/Extend下沒有擴充包,需要在ThinkPHP官網下載,然後將擴充包解壓放入)

<?php /**** 匯入Excel檔案資料到MySQL資料庫*/class IndexAction extends Action {   /**   * 顯示上傳表單html頁面   */  public function index() {    $this->display();  }   /**   * 上傳Excel檔案   */  public function upload() {    //引入ThinkPHP上傳檔案類    import('ORG.Net.UploadFile');    //執行個體化上傳類    $upload = new UploadFile();    //設定附件上傳檔案大小200Kib    $upload->mixSize = 2000000;    //設定附件上傳類型    $upload->allowExts = array('xls', 'xlsx', 'csv');    //設定附件上傳目錄在/Home/temp下    $upload->savePath = './Home/temp/';    //保持上傳檔案名稱不變    $upload->saveRule = '';    //存在同名檔案是否是覆蓋    $upload->uploadReplace = true;    if (!$upload->upload()) {  //如果上傳失敗,提示錯誤資訊      $this->error($upload->getErrorMsg());    } else {  //上傳成功      //擷取上傳檔案資訊      $info = $upload->getUploadFileInfo();      //擷取上傳儲存檔案名稱      $fileName = $info[0]['savename'];      //重新導向,把$fileName檔案名稱傳給importExcel()方法      $this->redirect('Index/importExcel', array('fileName' => $fileName), 1, '上傳成功!');    }  }   /**   *   * 匯入Excel檔案   */  public function importExcel() {    header("content-type:text/html;charset=utf-8");    //引入PHPExcel類    vendor('PHPExcel');    vendor('PHPExcel.IOFactory');    vendor('PHPExcel.Reader.Excel5');     //redirect傳來的檔案名稱    $fileName = $_GET['fileName'];     //檔案路徑    $filePath = './Home/temp/' . $fileName . '.xlsx';    //執行個體化PHPExcel類    $PHPExcel = new PHPExcel();    //預設用excel2007讀取excel,若格式不對,則用之前的版本進行讀取    $PHPReader = new PHPExcel_Reader_Excel2007();    if (!$PHPReader->canRead($filePath)) {      $PHPReader = new PHPExcel_Reader_Excel5();      if (!$PHPReader->canRead($filePath)) {        echo 'no Excel';        return;      }    }     //讀取Excel檔案    $PHPExcel = $PHPReader->load($filePath);    //讀取excel檔案中的第一個工作表    $sheet = $PHPExcel->getSheet(0);    //取得最大的列號    $allColumn = $sheet->getHighestColumn();    //取得最大的行號    $allRow = $sheet->getHighestRow();    //從第二行開始插入,第一行是列名    for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {      //擷取B列的值      $name = $PHPExcel->getActiveSheet()->getCell("B" . $currentRow)->getValue();      //擷取C列的值      $price = $PHPExcel->getActiveSheet()->getCell("C" . $currentRow)->getValue();      //擷取D列的值      $count = $PHPExcel->getActiveSheet()->getCell("D" . $currentRow)->getValue();       $m = M('Info');      $num = $m->add(array('pName' => $name, 'pPrice' => $price, 'pCount' => $count));    }    if ($num > 0) {      echo "添加成功!";    } else {      echo "添加失敗!";    }  } }?>

5.測試

感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.