之前在做dedecms后台二次开发的时候,有需求是批量导入客户内容,然后导出报表,因此用到了php导出excel的功能,我做的是导出csv文件,其实csv文件和excel文件一样,都能用excel表格打开,csv的容量相比excel要大一些。我的方法如下:
导出csv文件
<?php
require_once (dirname(__FILE__) . "/../include/common.inc.php");
$output = fopen('','w') or die("can't open ");
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="认证列表.csv"');
$arrkeys = array(
iconv('utf-8','gb2312','姓名'),
iconv('utf-8','gb2312','电话')//文件表头
);
fputcsv($output, $arrkeys);
//取得符合条件的数组
$sql = "SELECT * FROM dede_test";
$dsql->Execute('me',$sql);
while($row = $dsql->GetArray('me')){
$name =$row['name'];
$mobile= $row['mobile']; //循环
$arrkeys = array(
iconv('utf-8','gb2312',$name),
iconv('utf-8','gb2312',$mobile)
);
fputcsv($output, $arrkeys);
}
fclose($output) or die("can't close ");
exit();
?>
导入xls文件
<?php
require_once (dirname(__FILE__) . "/../include/common.inc.php");
include_once("excel/reader.php");
$tmp = $_FILES['file']['tmp_name'];
if (empty ($tmp)) {
ShowMsg("请选择要导入的Excel文件!","test.php");
exit;
}
$save_path = "xls/";
$file_name = $save_path.date('Ymdhis') . ".xls";
if (copy($tmp, $file_name)) {
$xls = new Spreadsheet_Excel_Reader();
$xls->setOutputEncoding('utf-8');
$xls->read($file_name);
for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) {
$name = $xls->sheets[0]['cells'][$i][1];
$mobile = $xls->sheets[0]['cells'][$i][2]
$data_values .= "('$name','$mobile'),";
}
$data_values = substr($data_values,0,-1);
$sql= "INSERT INTO dede_test (name,mobile) VALUES $data_values";
$dsql->ExecuteNoneQuery($sql);
$lastInsertID = $dsql->GetLastID();
if($dsql){
ShowMsg("成功导入!","test.php");
}else{
ShowMsg("导入失败!","test.php");
}
}
exit();
?>
有问题可以留言交流,具体demo后期会贴上,急需要demo的可以留言!