写的从数据库导入到呢
2021-08-24 淮安装修公司
PHP写的从数据库导入到EXCEL
PHP 写的从数据库导入到EXCEL终于写完了! 这个问题纠结了我一个星期! 谢谢上面帮助我的人和给我提的意见!
以前不能导出的问题是:
内存溢出然后页报错调用不了内存(呵呵,这个问题我还专门到国外论坛上发帖看看有上面方法解决,一个老外开跟我开一个玩笑 叫我设置一下这个ini_set(\"memory_limit\",\"2000M\");然后直接导致我机器死机)和CPU100% .
现在我自己通过用分批写入到文件中来实现!
原理我说一下: 就是原理很分页原理一样! 选取一定数量的数据然后变成数组,接着直接写入文件。接下来继续选取后面没选定数据在变成数组,接着在写入文件!这个解决了内存溢出。但是多CPU还是有个考验! 由于本人刚刚学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=\"\"\";
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 .= \"CellData ss:Type=\"String\"\" . $v . \"/Data/Cell\";
} else {
$cells .= \"CellData ss:Type=\"Number\"\" . $v . \"/Data/Cell\";
}
} else {
$cells .= \"CellData ss:Type=\"String\"\" . $v . \"/Data/Cell\";
}
endforeach;
$this-lines[] = \"Row\" . $cells . \"/Row\";
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/-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 \"Worksheet ss:Name=\"\" . $this-worksheet_title . \"\"Table\";
echo \"Column ss:Index=\"1\" ss:AutoFitWidth=\"0\" ss:Width=\"110\"/\";
echo implode (\"\", $this-lines);
echo \"/Table/Worksheet\";
echo $this-footer;
exit;
}
function write ($filename) // 重点
{
$content= stripslashes ($this-header);
$content.= \"Worksheet ss:Name=\"\" . $this-worksheet_title . \"\"Table\";
$content.= \"Column ss:Index=\"1\" ss:AutoFitWidth=\"0\" ss:Width=\"110\"/\";
$content.= implode (\"\", $this-lines);
$content.= \"/Table/Worksheet\";
$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);//清空内存中的数据
}
}
页面
PHP code
include_once\"./include/p\";//调用EXCEL类
require_once \"./include/p\";//调用大包类
$xls = new Excel;//实例化
$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 * from main_info\".$w[0].\" limit \".$s.\",\".$p);//调用自己写的数据库方法,写出数组
中国股市继续下滑 $xls-addArray ( $ip );//调用EXCEL 类中addArray 方法
xml1=$xls-write (\"./\".$i.\".xls\");//调用EXCEL 类中write 方法
unset($ip);
unset($xml1);
sleep(1);
}
康恩贝肠炎宁效果好吗西安妇科哪好
合肥治疗阴道炎费用

-
-
恩惠尤文要夺回意甲冠军但上诉遭意奥委会驳回
尤文要夺昨日回意甲冠军!但上诉遭意奥委会驳回尤文上诉被驳回直播吧5月...
- 建材选购 2020-09-13
-
恩惠尤文要夺回意甲冠军但上诉遭意奥委会驳回
-
-
丝路联赛吉林城投队新春献礼主场再胜奥瑞金搭配
【丝路联赛】吉林城投队新春献礼 主场再胜奥瑞金北京时间2019年2月9日,今...
- 建材选购 2020-06-07
-
丝路联赛吉林城投队新春献礼主场再胜奥瑞金搭配
-
-
禅师正式任尼克斯总裁杰克逊甜瓜是球队的未搭配
禅师正式任尼克斯总裁 杰克逊:甜瓜是球队的未来计划据ESPN报道,纽约尼克...
- 建材选购 2020-06-02
-
禅师正式任尼克斯总裁杰克逊甜瓜是球队的未搭配
-
-
詹姆斯决定韦德早已料到当年三巨联手太意外搭配
詹姆斯决定韦德早已料到 当年三巨联手太意外热火三巨头展示当年全新战袍...
- 建材选购 2020-05-29
-
詹姆斯决定韦德早已料到当年三巨联手太意外搭配
-
-
春节期间海南楼市大爆发共签3092套搭配
春节期间海南楼市大爆发 共签3092套 春节期间(1月21日—2月21日)海南楼市迎...
- 建材选购 2020-05-27
-
春节期间海南楼市大爆发共签3092套搭配
-
-
海南国际旅游岛五一房展亮点井喷首次一展三搭配
海南国际旅游岛五一房展亮点井喷 首次一展三址海南国际旅游岛五一房展亮...
- 建材选购 2020-05-27
-
海南国际旅游岛五一房展亮点井喷首次一展三搭配