excel文件内容导入数据库是非常常见的功能。在前段时间刚刚接触到它。这里简单说一下自己的理解。
第一步:PHPExcel类文件,引入到项目类库里。具体下载地址百度搜索即可。
第二步:在前端页面上传所需导入的excel文件。
文件上传方法代码如下:
public function fileupload()
{//判断文件类型以及限制大小
if (($_FILES["file"]["type"] == "application/vnd.ms-excel"|| $_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && $_FILES["file"]["size"] < 2000000)
{
if ($_FILES["file"]["error"] > 0)
{
$this->error= $_FILES["file"]["error"];
}
else
{
$directory = rtrim(DIR_IMAGE . $this->path);//文件路径
if (!is_dir($directory)) {//判断路径是否存在
mkdir($directory, 0777);
}
move_uploaded_file($_FILES["file"]["tmp_name"],
$directory . $_FILES["file"]["name"]);
$this->filename=$_FILES["file"]["name"];//保存文件名
}
}
else
{
$this->error="文件类型或大小出错!";
}
return $this->error? false:true;
}
第三步:将文件内容读入到一个数组中。
public function read($filename,$encode='utf-8'){
$excelData = array();
$objReader = new PHPExcel_Reader_Excel2007();
if(!$objReader->canRead($filename)){//如果文件不是.xlsx或.xls则返回空
$objReader = new PHPExcel_Reader_Excel5();
if (!$objReader->canRead($filename)){
$this->error="excel文件错误!";
return '';
}
}
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();//行
$highestColumn = $objWorksheet->getHighestColumn();//列
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//字符列表转换为数字列表
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$cell = (string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();//读取单元格数据
$excelData[$row][$col] = $cell;
}
}
return $excelData;
}