<?php
if($_POST['file_stu'] == "true")
{
$filename = $_FILES['inputExcel']['name'];
$tmp_name = $_FILES['inputExcel']['tmp_name'];
$msg = uploadFile($filename,$tmp_name);
echo $msg;
}
//导入Excel文件
function uploadFile($file,$filetempname)
{
//自己设置的上传文件存放路径
$filePath = 'upFile/';
$str ="";
//下面存放excel路径
require_once 'PHPExcel/PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
require_once 'PHPExcel/Reader/Excel5.php';
//注意设置时区
$time=date("y-m-d-H-i-s");//去当前上传的时间
//获取上传文件的扩展名
$extend=strrchr ($file,'.');
//上传后的文件名
$name=$time.$extend;
$uploadfile=$filePath.$name;//上传后的文件名地址
//move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
$result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
echo $result;
if($result) //如果上传文件成功,就执行导入excel操作
{
include "../data/common.inc.php";
$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$objPHPExcel = $objReader->load($uploadfile);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); //取得总行数
$highestColumn = $sheet->getHighestColumn(); //取得总列数
// 循环读取excel文件,读取一条,插入一条
for($j=1;$j<=$highestRow;$j++) //从第一行开始读取数据
{
for($k='A';$k<=$highestColumn;$k++) //从A列读取数据
{
//这种方法简单,但有不妥,以'\\'合并为数组,再分割\\为字段值插入到数据库
//实测在excel中,如果某单元格的值包含了\\导入的数据会为空
$str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';//读取单元格
}
echo $str;
die();
//explode:函数把字符串分割为数组。
$strs = explode("\\",$str);
print_r($strs);
exit;
$sql = "insert into dede_arctype(
`reid` ,
`topid` ,
`sortrank` ,
`typename` ,
`typedir` ,
`isdefault` ,
`defaultname` ,
`issend`
)
values (
'".$strs[0]."','".$strs[1]."','". $strs[2]."','". $strs[3]."','". $strs[4]."','". $strs[5]."','". $strs[6]."','". $strs[7]."')";
}
unlink($uploadfile); //删除上传的excel文件
$msg = "导入成功!";
}
}
/*class ExcelToArrary {
public function __construct() {
//导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制
include_once('Classes/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;
}
}
if (! empty ( $_FILES ['file_stu'] ['name'] ))
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
//判别是不是.xls文件,判别是不是excel文件
/* if (strtolower ( $file_type ) != "xls")
{
$this->error ( '不是Excel文件,重新上传' );
}*/
//设置上传路径
/* $savePath ='/upFile/';
//以时间来命名上传的文件
$str = date ( 'Ymdhis' );
file_name== $str . "." . $file_type;
//是否上传成功
if (! copy ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上传失败' );
}
//*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
//注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
$res =Service('ExcelToArray')->read($savePath . $file_name );
//重要代码 解决Thinkphp M、D方法不能调用的问题
//如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
spl_autoload_register ( array ('Think', 'autoload' ) );
//对生成的数组进行数据库的写入
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['uid'] = $v [0];
$data ['password'] = sha1 ( '111111' );
$data ['email'] = $v [1];
$data ['uname'] = $v [3];
$data ['institute'] = $v [4];
$result = M ( 'user' )->add ( $data );
if (! $result)
{
$this->error ( '导入数据库失败' );
}
}
}
}
*/
?>
登入後複製
<h3>导入Excel表:</h3>
<form method="post" action="excel_add.php" enctype="multipart/form-data">
<input type="hidden" name="inputExcel" value="true" />
<input type="file" name="file_stu"/>
<input type="submit" value="update" />
</form>
登入後複製