PHP 处理excel中数据 可以使用两种控件 phpexcel 以及php excel-reader
php excel reader 用法很简单,但是对于处理excel中的空白格 我没有找到合适的方法
所以就用了php excel。
首先导入插件:
require_once './Excel/PHPExcel.php';
然后:
首先是处理从数据库中查询出的数据导入到excel文件中
$objPHPExcel = new PHPExcel();
$num = 0;
//设置中国的时区 无所谓
date_default_timezone_set('Europe/London');
$objPHPExcel->getProperties()->setCreator("转弯的阳光")
->setLastModifiedBy("转弯的阳光")
->setTitle("数据EXCEL导出")
->setSubject("数据EXCEL导出")
->setDescription("备份数据")
->setKeywords("excel")
->setCategory("result file");
//(0是指多个工作sheet) 设置第一行的内容
$objPHPExcel->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出数组的键值,下面以此类推
->setCellValue('A'.'1', '高压')
->setCellValue('B'.'1', '低压')
->setCellValue('C'.'1', '心率')
->setCellValue('D'.'1', '时间');
//设置第二行以后全部数据内容
while($i<$j)
{
//echo
//echo $str =$str. $arg[$i]['value']."\t\t\t"."\t".$arg2[$i]['value']."\t\t\t".$arg4[$i]['value']."\t\t\t".$arg4[$i]['updated_at']."\t\n";
//echo '</br>';
$objPHPExcel->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出数组的键值,下面以此类推
->setCellValue('A'.$i, $arg[$i]['value'])
->setCellValue('B'.$i, $arg2[$i]['value'])
->setCellValue('C'.$i, $arg4[$i]['value'])
->setCellValue('D'.$i, $arg4[$i]['updated_at']);
//$data[$i]['data_id'] = $arg[]."\t".$row[]."\t".$row[]."\n";
$i++;
}
//将上传的excel文件保存为时间戳格式的excel文件
$filename = time().".xls";
$objPHPExcel->getActiveSheet()->setTitle('User');
$objPHPExcel->setActiveSheetIndex(0);
//必须存在的头文件
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//将excel文件存储在指定位置
$objWriter->save('C:\.....\public\downdata\\'.$filename);
网上很多人都是说直接使用$objWriter->save(
'php://output'
);
不过效果我没有使用过,我是从后台处理好之后直接保存到服务器本地;
然后处理上传的excel文件:
导入头文件是必须的:
require_once './Excel/PHPExcel.php';
require_once './Excel/PHPExcel/IOFactory.php';
然后处理excel文件的内容:
$reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)
//path肯定是服务器本地地址
$PHPExcel = $reader->load($path); // 载入excel文件
$sheet = $PHPExcel->getSheet(0); // 读取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
//$highestColumm= PHPExcel_Cell::columnIndexFromString($colsNum); //字母列转换为数字列 如:AA变为27
/** 循环读取每个单元格的数据 */ //我的一共是6列,需要一次读出来,保存到数据库
for ($row = 2; $row <= $highestRow; $row++){//行数是以第1行开始
//for ($column = 'A'; $column <= 7; $column++) {//列数是以A列开始
//$dataset[] = $sheet->getCell(.$row)->getValue();
$a = $sheet->getCell('A'.$row)->getValue();
$b = $sheet->getCell('B'.$row)->getValue();
$c = $sheet->getCell('C'.$row)->getValue();
$d = $sheet->getCell('D'.$row)->getValue();
$high = $sheet->getCell('E'.$row)->getValue();
$low = $sheet->getCell('F'.$row)->getValue();
$heart = $sheet->getCell('G'.$row)->getValue();
}