// 上传 Excel
public function uploadExcel() {
// 上传错误
if ($_FILES['file']['error'] > 0) die("上传文件错误:{$_FILES['file']['error']}");
// 文件类型读取内容
$filePathinfo = pathinfo($_FILES['file']['name']);
switch ($filePathinfo['extension']) {
case 'xls':
$fileData = $this->readExcel($_FILES['file']['tmp_name']);
break;
case 'csv':
$fileData = $this->readCSV($_FILES['file']['tmp_name']);
break;
default:
die('只支持此类型文件(xls/csv)导入!');
}
if (!$fileData) die('文件内容为空!');
print_r($fileData);
}
/**
* 读取Excel
* @param string $filePath 文件路径
* @param int $item 第一项(第一个工作表)
* @return array|string
* @throws PHPExcel_Exception
* @throws PHPExcel_Reader_Exception
*/
public function readExcel($filePath = '', $item = 0) {
if (empty($filePath)) die('文件路径不能为空!');
// 设置页面等待时间
set_time_limit(0);
// 不限制内存
ini_set('memory_limit', '-1');
// 获取当前文件地址
$dqml = dirname(__FILE__);
// 引入库
require "{$dqml}/libs/PHPExcel.php";
// 文件类型
$fileType = PHPExcel_IOFactory::identify($filePath);
if (!in_array($fileType, array('Excel5', 'Excel2007'))) die('导入的文件格式错误!');
// 加载文件
$objPHPExcelReader = PHPExcel_IOFactory::load($filePath);
// 读取第一個工作表
$sheet = $objPHPExcelReader->getSheet($item);
// 取得总行数
$highestRow = $sheet->getHighestRow();
// 取得总列数(字母列转换为数字列 如:AA变为27)
$highestColumm = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
$data = array();
// 外循环产生每一行
for ($row = 1; $row <= $highestRow; $row++) {
// 记录行总长度
$totalLen = 0;
// 内循环产生每一列
for ($column = 0; $column <= $highestColumm; $column++) {
// 数字列转换为字母列 如:27变为AA
$value = $sheet->getCellByColumnAndRow($column, $row)->getValue();
if (is_object($value)) $value = $value->__toString();
$data[$row][] = $value;
$totalLen += strlen(trim($value));
}
// 去掉空行
if ($totalLen == 0) unset($data[$row]);
}
return array_values($data);
}
/**
* 读取CSV
* @param string $filePath 文件路径
* @return array
*/
public function readCSV($filePath = '') {
if (empty($filePath)) die('文件路径不能为空!');
$content = file_get_contents($filePath);
$arr = preg_split('/\n/', $content);
$data = array();
foreach ($arr as $key => $value) {
if ($value) $data[] = explode(',', trim($value));
}
return $data;
}
导入Excel
最新推荐文章于 2020-04-12 12:01:08 发布