您的位置:首页 > 编程语言 > PHP开发

用php导入的个人总结

2017-04-06 15:20 225 查看
用PHPExcel写完导入,发现问题也是不少,在这里总结下.

问题一,遇到报错信息如下:
The filename D:\www/20170406011522.xlsx is not recognised as an OLE file.

文件的类型,完整性,大小等因素都会报此错,解决办法:
1.检查上传之后保存的值打印出来看(文件类型,保存路径,临时文件夹文件名,保存的文件名);
2.检查上传文件的后缀名.我的代码必须是能打开的.xls文件才行,而.xlsx就会报错或者不能打开的.xls也会报错.(使用Excel2007创建的文档,需要另存为2003的).

3.检查文件的完整性,是不是能正常打开.
4.检查文件的大小是否超过范围.

问题二,在thinkphp框架里面的引入类:

不能打开各种类.

解决办法:

1.检查引入文件的路径.

2.检查明明空间.

3.不能重复定义类

mark一下我的代码:

if($_POST['act'] == 'input')
{
$file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
if($file_type == 'xlsx'){
echo "目前只支持后缀名为.xls的Excel文件!!!";
die;
}
// 保存路径
$SavePath = 'D:\www/';
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type;

/*是否上传成功*/
if (! copy ( $tmp_file, $SavePath . $file_name ))
{
echo '错误代码: '.$_FILES ['file_stu'] ['error'];
echo "<br>";
echo '上传失败' ;
}
require_once 'ExceltoArr.php';
$aa = new ExcelToArrary;
$res = $aa ->read($SavePath.$file_name);

/*对生成的数组进行数据库的写入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
// $data ['id'] = iconv('utf-8','gb2312',$v [0]);
$data ['cardId'] = $v [1];
$data ['mobile'] = $v [2];
$data ['name'] = $v [3];
$data ['doStore'] = $v [4];
$data ['integral'] = $v [5];
$data ['birthday'] = $v [6];
$data ['registerTime'] = $v [7];
$result = $User->data($data)->add();
if (! $result)
{
$this->success( '导入数据库失败!' );
}
}
}
$this->success( '导入数据库成功!!' );
}

里面用到的这个把excel文件转换成数组的类    代码如下:
class ExcelToArrary{
public function __construct() {
/*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/
include_once('/PHPExcel.php');
}
/**
* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8
*以下基本都不要修改
*/
public function read($filename,$encode='utf-8'){
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for($row=1;$row<=$highestRow;$row++){
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息