关闭

PHP写的从数据库导入到EXCEL

发表于:2014-11-24 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:seosyw    来源:51Testing软件测试网采编

  原理: 就是原理很分页原理一样! 选取一定数量的数据然后变成数组,接着直接写入文件。接下来继续选取后面没选定数据在变成数组,接着在写入文件!这个解决了内存溢出。但是多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);//清空内存中的数据
}
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号