php 解析excel 表格的数据方法
1、获取本地某个excel 的数据,如表格
2、做成动态的数据,如按照一定的表格样式构建数据,然后上传,获取文件地址,开始解析excel,获取数据
以上两个方法都可以用如下方法,便可以解析出excel 里面的数据
public function handle_data(){
/*读取excel文件,并进行相应处理*/
//s$fileName = "F:/handle_data/data.xlsx"; 这是第一个方法,直接获取文件excel的地址
//$fileName = "F:/handle_data/test.xlsx";
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$info = array('status' => 'fail', 'msg' => '上传失败!');
$file = $_FILES['upfile'];这是第二个方法,上传本地文件excel,到下面去获取excel地址
if ($file['error'] == 4) {
$info['msg'] = '请选择文件后再上传!';
} else if ($file['error'] == 1) {
$info['msg'] = '文件超出了php.ini文件指定大小!';
} else if ($file['size'] > 0) {
$key = md5_file($file['tmp_name']);
$upfile_path = Tiny::getPath("uploads") . '/excel/';
$upfile_url = preg_replace("|^" . APP_URL . "|", '', Tiny::getPath("uploads_url"));
$upfile = new UploadFile('upfile', $upfile_path, '10m', 'xls,xlsx,csv', 'hash', $key);
$upfile->save();
$info = $upfile->getInfo();
//上传成功之后的路径
$fileName = './data/uploads/excel/' . $info[0]['path'];
//$fileName = Req::args('upfile');
if (!file_exists($fileName)) {
exit("文件" . $fileName . "不存在");
}
//$startTime = time(); //返回当前时间的Unix 时间戳
require_once './protected/classes/PHPExcel/IOFactory.php';//引入PHPExcel类库
$objPHPExcel = PHPExcel_IOFactory::load($fileName);//获取sheet表格数目
// 获得sheet1
$sheet = $objPHPExcel->getActiveSheet(0);
// 当前sheet的最大行数
$highestRow = $sheet->getHighestRow();
// 获取Excel数据
$arr = $sheet->toArray();
// 解析
$data = [];
$length = count($arr);
for ($i = 1; $i < $length; $i++) {
// 为什么i从1开始?因为i=0是列标题!
$data[$i - 1] = [
'order_no' => $arr[$i][0],
'pay_time' => $arr[$i][1],
'nick_name' => $arr[$i][2],
'mobile' => $arr[$i][3],
'card_name' => $arr[$i][4],
'all_nums' => $arr[$i][5],
'no_nums' => $arr[$i][6],
'all_money' => $arr[$i][7],
'end_time' => $arr[$i][8],
'refund_money' => $arr[$i][9],
'ali_pay' => $arr[$i][10],
'real_name' => $arr[$i][11],
];
}
}
}
var_dump($data);
这两种方法的前提是需要下载一个phpEXCEl的包到项目中去才可以,两种方法需要自己稍微整理测试。
打印便得一个二维数组的数据