|
需要LINUX元件
筆者再使用PHPExcel 時,爬了很多文章,問題就卡在於
有的能用EXCEL 2003,有的能用EXCEL 2007
就是不能同時使用,所以筆者修改了些程式語法
首先建立global.php檔案- <?php
- $mydbhost = "localhost";
- $mydbuser = "root";
- $mydbpw = "12345678";
- $mydbname = "xxxxx";
- $mydbcharset = "UTF8";
- $db = @mysql_connect($mydbhost,$mydbuser,$mydbpw);
- if (!$db) {
- exit('Unable connect MYSQL at this time');
- }
- if (!@mysql_select_db($mydbname)) {
- exit ('Unable connect DB at this time');
- }
- mysql_query("SET NAMES $mydbcharset", $db);
- ?>
複製代碼 建立test1.php檔案- <?php
- include_once ('global.php');
- if (isset($_POST["send"])) {
- $leadExcel=$_POST["leadExcel"];;
- if($leadExcel == "true"){
- //獲取上傳的文件名
- $filename = $_FILES['inputExcel']['name'];
- //上傳到服務器上的臨時文件名
- $tmp_name = $_FILES['inputExcel']['tmp_name'];
- $msg = uploadFile($filename,$tmp_name);
- }
- }
- if (isset($_POST["clear"])) {
- $sql = "TRUNCATE TABLE net_mailuser";
- if(!mysql_query($sql)){
- return false;
- }
- echo '<script>alert(\'電子報會員資料已清空!\');window.location=\'test1.php\';</script>';
- }
- ?>
- <form name="form2" method="post" action="<?php $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
- <input type="hidden" name="leadExcel" value="true">
- <table align="center" width="90%" border="0">
- <tr>
- <td>
- <input type="file" name="inputExcel"><input type="submit" value="上傳" name="send">
- </td>
- </tr>
- <tr>
- <td>
- <input type="submit" value="清空電子報會員資料" name="clear">
- </td>
- </tr>
- </table>
- </form>
- <?
- //導入Excel文件
- function uploadFile($file,$filetempname) {
- //自己設置的上傳文件存放路徑
- $filePath = 'uploads/';
- $str = "";
- require_once("PHPExcel/IOFactory.php");
- $filename=explode(".",$file);//把上傳的文件名以「.」好為準做一個數組。
- $time=date("y-m-d-H-i-s");//去當前上傳的時間
- $filename[0]=$time;//取文件名t替換
- $name=implode(".",$filename); //上傳後的文件名
- $uploadfile=$filePath.$name;//上傳後的文件名地址
- //move_uploaded_file() 函數將上傳的文件移動到新位置。若成功,則返回 true,否則返回 false。
- $result=move_uploaded_file($filetempname,$uploadfile);//假如上傳到當前目錄下
- if($result) { //如果上傳文件成功,就執行導入excel操作
- $objPHPExcel = PHPExcel_IOFactory::load($uploadfile);
- $objPHPExcel->setActiveSheetIndex(0);
- $sheet = $objPHPExcel->getActiveSheet();
- $highestRow = $sheet->getHighestRow(); // 取得總行數
- $highestColumn = $sheet->getHighestColumn(); // 取得總列數
- //循環讀取excel文件,讀取一條,插入一條
- for($j=2;$j<=$highestRow;$j++){
- for($k='A';$k<=$highestColumn;$k++){
- $str .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';
- //讀取單元格
- }
- //explode:函數把字符串分割為數組。
- $strs = explode("\",$str);
- $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]')";
- if(!mysql_query($sql)){
- return false;
- }
- $str = "";
- }
- unlink($uploadfile); //刪除上傳的excel文件
- echo '<script>alert(\'匯入完成!\');window.location=\'test1.php\';</script>';
- }else{
- echo '<script>alert(\'匯入失敗!\');window.location=\'test1.php\';</script>';
- }
- }
- ?>
複製代碼 資料庫欄位設置- CREATE TABLE IF NOT EXISTS `net_mailuser` (
- `id` int(5) NOT NULL auto_increment,
- `name` char(255) default NULL,
- `email` char(255) default NULL,
- `phone` char(255) default NULL,
- `cell` char(255) default NULL,
- `address` char(255) default NULL,
- `qa` varchar(255) default NULL,
- `ps` varchar(255) default NULL,
- `psname` varchar(255) default NULL,
- PRIMARY KEY (`id`)
- );
複製代碼
目前都已測試成功,如果有問題可在下面回文
phpExcelReader.zip
(21.02 KB, 下載次數: 68, 售價: 10 金T幣)
|
|