1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP写的从数据库导入到EXCEL

作者:用户 来源:互联网 时间:2017-12-01 10:06:46

数据库excel

PHP写的从数据库导入到EXCEL - 摘要: 本文讲的是PHP写的从数据库导入到EXCEL, 原理: 就是原理很分页原理一样! 选取一定数量的数据然后变成数组,接着直接写入文件。接下来继续选取后面没选定数据在变成数组,接着在写入文件。这个解决了内存溢出。但是多CPU还是有个考验。 由于本人刚刚学PHP(PHP培训php教程)不久,

原理: 就是原理很分页原理一样! 选取一定数量的数据然后变成数组,接着直接写入文件。接下来继续选取后面没选定数据在变成数组,接着在写入文件。这个解决了内存溢出。但是多CPU还是有个考验。 由于本人刚刚学PHP(PHP培训php教程)不久,功力不深厚。只能写出这样的东西。 

源码。

Excel(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);//清空内存中的数据

}

}

页面

PHP code

include_once”./include/class.excel.PHP”;//调用EXCEL类

require_once ‘./include/class.zipfile.PHP';//调用大包类 

$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);

}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库 excel ,以便于您获取更多的相关知识。