qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          PHP寫的從數據庫導入到EXCEL

          原理: 就是原理很分頁原理一樣! 選取一定數量的數據然后變成數組,接著直接寫入文件。接下來繼續選取后面沒選定數據在變成數組,接著在寫入文件!這個解決了內存溢出。但是多CPU還是有個考驗! 由于本人剛剛學PHP(PHP培訓 php教程 )不久,功力不深厚!只能寫出這樣的東西!
            源碼!
            Excel類
          PHP code
          class Excel{
          var $header = "<?xml version="1.0" encoding="utf-8"?>
          <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
          xmlns:x="urn:schemas-microsoft-com:office:excel"
          xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
          xmlns:html="http://www.w3.org/TR/REC-html40">";
          var $footer = "</Workbook>";
          var $lines = array ();
          var $worksheet_title = "Table1";
          function addRow ($array) {
          $cells = "";
          foreach ($array as $k => $v):
          if(is_numeric($v)) {
          if(substr($v, 0, 1) == 0) {
          $cells .= "<Cell><Data ss:Type="String">" . $v . "</Data></Cell>n";
          } else {
          $cells .= "<Cell><Data ss:Type="Number">" . $v . "</Data></Cell>n";
          }
          } else {
          $cells .= "<Cell><Data ss:Type="String">" . $v . "</Data></Cell>n";
          }
          endforeach;
          $this->lines[] = "<Row>n" . $cells . "</Row>n";
          unset($arry);
          }
          function setWorksheetTitle ($title) {
          $title = preg_replace ("/[\|:|/|?|*|[|]]/", "", $title);
          $title = substr ($title, 0, 31);
          $this->worksheet_title = $title;
          }
          function generateXML ($filename) {
          // deliver header (as recommended in PHP manual)
          header("Content-Type: application/vnd.ms-excel; charset=utf-8");
          header("Content-Disposition: inline; filename="" . $filename . ".xls"");
          // print out document to the browser
          // need to use stripslashes for the damn ">"
          echo stripslashes ($this->header);
          echo "n<Worksheet ss:Name="" . $this->worksheet_title . "">n<Table>n";
          echo "<Column ss:Index="1" ss:AutoFitWidth="0" ss:Width="110"/>n";
          echo implode ("n", $this->lines);
          echo "</Table>n</Worksheet>n";
          echo $this->footer;
          exit;
          }
          function write ($filename) // 重點
          {
          $content= stripslashes ($this->header);
          $content.= "n<Worksheet ss:Name="" . $this->worksheet_title . "">n<Table>n";
          $content.= "<Column ss:Index="1" ss:AutoFitWidth="0" ss:Width="110"/>n";
          $content.= implode ("n", $this->lines);
          $content.= "</Table>n</Worksheet>n";
          $content.= $this->footer;//EXCEL文件
          //error_log($content, 3,$filename);
          if (!file_exists($filename))//判斷有沒有文件
          {
          fopen($filename,'a');
          }
          $fp = fopen($filename,'a');
          fwrite($fp, $content);//寫入文件
          fclose($fp);
          unset($this->lines);//清空內存中的數據
          }
          }
           頁面
          PHPcode
          include_once"./include/class.excel.PHP";//調用EXCEL類
          require_once'./include/class.zipfile.PHP';//調用大包類
          $xls=newExcel;//實例化
          $w=explode("limit",$where_str);//把WHERE
          $p=6000;//分頁原理
          $a=$ip_list_count/$p;//分頁原理
          if($ip_list_count%$p==0)//分頁原理
          else//分頁原理
          for($i=0;$i<=$a;$i++)//循環寫出
          {
          $s=6000*$i;
          $ip=$_SG['db']->fetch_all("select*frommain_info".$w[0]."limit".$s.",".$p);//調用自己寫的數據庫(數據庫培訓數據庫認證)方法,寫出數組
          $xls->addArray($ip);//調用EXCEL類中addArray方法
          xml1=$xls->write("./".$i.".xls");//調用EXCEL類中write方法
          unset($ip);
          unset($xml1);
          sleep(1);
          }

          posted on 2014-11-26 15:08 順其自然EVO 閱讀(471) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄數據庫

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 馆陶县| 东明县| 元朗区| 镇原县| 江陵县| 台东县| 方城县| 嘉义市| 阿巴嘎旗| 柳江县| 亚东县| 子洲县| 蒙自县| 阿图什市| 正蓝旗| 收藏| 河北省| 平泉县| 历史| 宁南县| 林周县| 雷州市| 江西省| 吴桥县| 洛川县| 信丰县| 新民市| 鲁甸县| 河池市| 定襄县| 蓬安县| 宁波市| 体育| 东莞市| 宣武区| 阳信县| 精河县| 康平县| 岱山县| 余江县| 福安市|