导出Excel
if (!function_exists('excel_export')) {
/**
* @param string $file_name 文件名称
* @param array $headArr 表头名称
* @param array $data 要导出的数据
* @return [type] [description]
*/
function excel_export($file_name = '', $headArr = [], $data = [])
{
import('PHPExcel', EXTEND_PATH);
$file_name .= "_" . date("Y_m_d", request()->time()) . ".xls";
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties();
$key = ord("A"); // 设置表头
foreach ($headArr as $v) {
$colum = chr($key);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
$key += 1;
}
$column = 2;
$objActSheet = $objPHPExcel->getActiveSheet();
foreach ($data as $key => $rows) { // 行写入
$span = ord("A");
foreach ($rows as $keyName => $value) { // 列写入
$objActSheet->setCellValue(chr($span) . $column, $value);
$span++;
}
$column++;
}
$file_name = iconv("utf-8", "gb2312", $file_name); // 重命名表
$objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename='$file_name'");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); // 文件通过浏览器下载
die;
}
}
读取Excel
if (!function_exists('excel_reader')) {
/**
* @param string $file_name [description]
* @return [type] [description]
*/
function excel_reader($file_name = '')
{
$file_name = 'C:\Users\rongshenzhen\Desktop\aaa.xlsx';
if (!file_exists($file_name)) die('文件'.$file_name.'不存在');
import('PHPExcel', EXTEND_PATH);
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); // 扩展名
if ($extension == 'xlsx') {
$objReader = new \PHPExcel_Reader_Excel2007();
} else if ($extension == 'xls') {
$objReader = new \PHPExcel_Reader_Excel5();
} else if ($extension == 'csv') {
$objReader = new \PHPExcel_Reader_CSV();
}
$objPHPExcel = $objReader->load($file_name);
$sheets = $objReader->listWorksheetInfo($file_name); // 获取工作表的信息
$data = array();
foreach ($sheets as $key => $val) {
// 总行数和总列数大于0
if ($val['totalRows'] && $val['totalColumns']) {
// 读取整张工作表
$data[$key] = $objPHPExcel->getSheet($key)->toArray();
// 读取范围
// $data[$key] = $objPHPExcel->getSheet($key)->rangeToArray('A1:'.$val['lastColumnLetter'].$val['totalRows']);
}
}
return $data;
}
}