首页 > 代码库 > 自己写的两个导数据函数
自己写的两个导数据函数
一、
/**
* 导出数据到excel文件中(用样式处理)
* @param array $data 输出主体部分内容
* @param array $header_data 输出头部分内容
* @param string $file_name 自定义文件名
* @param string $unicode 自定义输出数据编码
* @param string $start_time 开始运行时间(放在文件开始位置 $start_time = microtime(true))
*/
function exportExcel($data = http://www.mamicode.com/[], $header_data = [], $file_name = ‘‘, $unicode = ‘UTF-8‘, $start_time = ‘‘)
{
if (empty($data) || empty($header_data) || $file_name == ‘‘) {
return;
}
header(‘pragma:public‘);
header(‘Content-type:application/vnd.ms-excel‘);
header("Content-Disposition:attachment;filename=$file_name.xls");//attachment新窗口打印inline本窗口打印
echo ‘<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=‘.$unicode.‘" />
</head>
<body> ‘;
echo ‘<table border="1" cellspacing="0" cellpadding="0">‘;
echo ‘<tr>‘;
$h_count = count($header_data);
for ($i = 0; $i < $h_count; $i++) {
echo ‘<th width="120" height="25" style="">‘ . iconv(‘GBK‘, $unicode, $header_data[$i]) . ‘</th>‘;
}
$c_count = count($data);
for ($i = 0; $i < $c_count; $i++) {
$row = $data[$i];
echo ‘<tr>‘;
foreach ($row as $key => $val) {
if ($i % 2 == 0) {
echo ‘<td height="25" >‘ .$val. ‘</td>‘;
} else {
echo ‘<td height="25" style="">‘ .$val. ‘</td>‘;
}
}
echo ‘</tr>‘;
}
echo ‘</table>‘;
echo ‘ </body>
</html>‘;
}
二、
/**
* 导出数据到csv文件
* @param array $data 输出主体部分内容
* @param array $header_data 输出头部分内容
* @param string $file_name 自定义文件名
* @param string $unicode 输出前数据编码(输出后会统一转为GBK编码格式)
* @param string $start_time 开始运行时间(放在文件开始位置 $start_time = microtime(true))
*/
function exportCsv($data = http://www.mamicode.com/[], $header_data = [], $file_name = ‘‘, $unicode = ‘GBK‘, $start_time = ‘‘)
{
if (empty($data) || empty($header_data) || $file_name == ‘‘) {
return;
}
$fp = fopen($file_name . ".csv", ‘a+‘);
fputcsv($fp, $header_data);
$num = 0; //计数器
//每隔$limit行,刷新一下输出buffer,不要太大也不要太小
$limit = 100000;
//逐行取出数据,不浪费内存
$count = count($data);
if ($count > 0) {
for ($i = 0; $i < $count; $i++) {
$num++;
//刷新一下输出buffer,防止由于数据过多造成问题
if ($limit == $num) {
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
if ($unicode != ‘GBK‘) {
foreach ($row as $key => $value) {
$row[$key] = iconv($unicode, ‘GBK‘, $value);
}
}
fputcsv($fp, $row);
unset($row);
//数据导出百分比
$percent = intval((($i+1) / $count) * 100);
//隐藏光标,显示进度条
printf("\033[?25lmprogress: \033[41m\033[1m %d%% %s\r\033[0m", $percent, str_repeat(‘ ‘, $percent));
/*usleep(1000 * 1);*/
}
}
fclose($fp);
echo "\n";
if ($start_time != ‘‘) {
//输出运行时间
echo "runtime: ";
$time_diff = round(microtime(true) - $start_time, 3);
if ($time_diff >= 60) {
$m = $time_diff / 60;
$s = $time_diff - ($m * 60);
echo $m . ":" . $s . "\n";
} else {
echo $time_diff . "s" . "\n";
}
}
echo "Done.\n";
printf("\033[?25h"); //显示光标
}
自己写的两个导数据函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。