tp5怎么使用PHPExcel
123456
...
tp5我还也还没有直接调用上phpexcel, 不过我的一个项目也要用phpexcel。我绕了一个圈,从外部把phpexcel加上到tp5上。思路如下:
1.直接下载phpexcel到 tp5的某个目录。 phpexcel是可以直接使用的,下载下来的带着很多demo实例。主要意思是实现了对某个excel文件解析成一个数组。我们需要的就是这个数组。
2. 通过tp5后台做好上传的excel文件,上传到的路径设置为第一步phpexcel需要读取的一个文件夹中。然后通过get传过去到phpexcel文件和文件名。
3. phpexcel 根据tp5 下某个文件 传来的excel文件名 进行解析成 数组。
4. 把这个数组存入数据库。 我这里手工又原生写的数据库链接,十分啰嗦,不变维护。理想的状态至少再把这个数组传回到 tp5 的框架里面去处理,我没有找到回传的方法。
2017-6-28今天上来看到评论上要demo代码,我去翻了一下代码,看看都是去年10月份写的了,时间以上具体路径都忘了,记住的往往是实现思路。
下面这个是PHPExcel里自带的exampleReader01.php文件,我就直接用的这个演示稍微改了一下实现的。我保存的路径是\vendor\PHPExcel\Documentation\Examples\Reader
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>PHPExcel Reader Example #01</title>
</head>
<body>
<!-- <h1>PHPExcel Reader Example #01</h1>
<h2>Simple File Reader using PHPExcel_IOFactory::load()</h2> -->
<?php
header("Content-Type: text/html;charset=utf-8");
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');
/** PHPExcel_IOFactory */
include 'PHPExcel/IOFactory.php';
if ($_GET["name"]) {
//echo $_GET["name"];
$filename = $_GET["name"];
$userget = $_GET["username"];
# code...
$inputFileName = './sampleData'.$filename;
//echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
//echo '<hr />';
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
// var_dump($sheetData);
// echo '不统计多维数组:'.count($sheetData,0);
// echo '或用sizeof为'.sizeof($sheetData,0);
// var_dump($_SERVER['SERVER_NAME']);exit();
//本地数据库,和在线数据库的切换功能;
if ( $_SERVER['SERVER_NAME']=="localhost") {
# code...
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "youme";
} else {
# code...
// $servername = "7rg97t1x.2259.dnstoo.com";
// $username = "c2j95tkx_f";
// $password = "zv92ljv5";
// $dbname = "c2j95tkx";
$servername = "localhost";
$username = "5915691c1e4cb";
$password = "HTEFdhwo243";
$dbname = "5915691c1e4cb";
}
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$conn->query("SET NAMES utf8");
// var_dump("expression");exit();
if ($_GET["m"]==1) {
# 导入用户...
for ($i=2; $i < count($sheetData,0)+1 ; $i++) {
# code...
$gmmb = $sheetData["$i"] ["B"];
$gmmc = $sheetData["$i"] ["C"];
$gmmd = $sheetData["$i"] ["D"];
$gmme = $sheetData["$i"] ["E"];
$gmmf = $sheetData["$i"] ["F"];
$gmmg = $sheetData["$i"] ["G"];
$gmmh = $sheetData["$i"] ["H"];
$gmmi = $sheetData["$i"] ["I"];
$gmmj = $sheetData["$i"] ["J"];
$gmmk = $sheetData["$i"] ["K"];
$gmml = $sheetData["$i"] ["L"];
$gmmm = $sheetData["$i"] ["M"];
$sql2 = "INSERT INTO gmt_member(username, name, province,city,area,school,grade,class,serialnumber,telephone,type,level,number)
VALUES ('$userget', '$gmmb', '$gmmc', '$gmmd', '$gmme', '$gmmf', '$gmmg', '$gmmh', '$gmmi', '$gmmj', '$gmmk', '$gmml', '$gmmm')";
if ($conn->query($sql2) === TRUE) {
$idq = $i-1;
} else {
echo "Error: " . $sql2 . "<br>" . $conn->error;
}
}
$done = count($sheetData,0)-1;
echo "<h2>导入了".$done."个用户</h2>";
} else {
# // 导入问卷...
$gmmb = $sheetData["2"] ["B"];
$gmmc = $sheetData["2"] ["C"];
$time = time();
$sql = "INSERT INTO gmt_cate(catename, title,username,time)
VALUES ('$gmmb', '$gmmc','$userget','$time')";
// $conn->query($sql);
if ($conn->query($sql) === TRUE) {
echo "<h2>导入题目成功</h2>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$idsql = mysqli_insert_id($conn);
for ($i=2; $i < count($sheetData,0)+1 ; $i++) {
# code...
$gmmd = $sheetData["$i"] ["D"];
$gmme = $sheetData["$i"] ["E"];
$gmmf = $sheetData["$i"] ["F"];
$gmmg = $sheetData["$i"] ["G"];
$gmmh = $sheetData["$i"] ["H"];
$gmmi = $sheetData["$i"] ["I"];
$gmmj = $sheetData["$i"] ["J"];
$gmmk = $sheetData["$i"] ["K"];
//var_dump($idsql);exit();
$sql2 = "INSERT INTO gmt_cate_contens(cate, title, type, answer1, answer2, answer3, answer4, answer5, answer6)
VALUES ('$idsql', '$gmmd', '$gmme', '$gmmf', '$gmmg', '$gmmh', '$gmmi', '$gmmj', '$gmmk')";
if ($conn->query($sql2) === TRUE) {
$idq = $i-1;
echo "<h2>第".$idq."题导入成功</h2>";
} else {
echo "Error: " . $sql2 . "<br>" . $conn->error;
}
}
}
$conn->close();
}
?>
<body>
</html>再简单说明几句:1.代码第15行,set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');
这个是接收thinkphp你后台的一个提交excel文件的接口。接收到了,就获得了上来的文件名和存储路径。
2.然后我们依托phpexcel的功能,获得一个数组
3.我把这个数组 对应自己数据库的需求 存入数据库,返回 导入完成了
导入的结果,去tinkphp后台就可以根据需要查询了。
其实我是完全脱离了thinkphp的,至少不用这这里重新手工设置数据库链接就好了,直接调用thinkphp配置文件里的
