我想使用php将excel数据导入mysql。如果我将excel文件的路径写为硬编码,我的程序可以正常工作。但是,如果我当时尝试使用上传功能,我将面临一个错误。我的错误就像以下一样。 :
filename C:\ wamp \ tmp \ php1FC.tmp不可读
我也提供我的代码供参考:
include 'config.php';
require_once 'Excel/reader.php';
$allowedExts = array("xls","xlsx");
$temp = explode(".", $_FILES["file"]["name"]);
if (in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
$filename=$_FILES["file"]["name"] ;
$filetype=$_FILES["file"]["type"] ;
$filesize=$_FILES["file"]["size"] ;
$filetemp=$_FILES["file"]["tmp_name"];
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
$handle = fopen($filetemp, "r");
$data = new Spreadsheet_Excel_Reader();
$data->read($filetemp);
$numr=$data->sheets[0]['numRows'];
for ($i = 2; $i <= $numr ; $i++)
{
$gender=$data->sheets[0]['cells'][$i][1];
$txtname=$data->sheets[0]['cells'][$i][2];
$txtusername = $data->sheets[0]['cells'][$i][3];
$txtphone=$data->sheets[0]['cells'][$i][4];
$txtlandno=$data->sheets[0]['cells'][$i][5];
$txtwing=$data->sheets[0]['cells'][$i][6];
$txtemail=$data->sheets[0]['cells'][$i][7];
$txtflat=$data->sheets[0]['cells'][$i][8];
$intercom=$data->sheets[0]['cells'][$i][9];
$userstatus=$data->sheets[0]['cells'][$i][10];
$livestatus=$data->sheets[0]['cells'][$i][11];
$flattype=$data->sheets[0]['cells'][$i][12];
$area1=$data->sheets[0]['cells'][$i][13];
$txtbuilding=$data->sheets[0]['cells'][$i][14];
$housingloan=$data->sheets[0]['cells'][$i][15];
$txtparking=$data->sheets[0]['cells'][$i][16];
$principalopBal=$data->sheets[0]['cells'][$i][17];
$interestBal=$data->sheets[0]['cells'][$i][18];
$servicetax=$data->sheets[0]['cells'][$i][19];
$txtgym=$data->sheets[0]['cells'][$i][20];
$txtcable=$data->sheets[0]['cells'][$i][21];
$txtswim=$data->sheets[0]['cells'][$i][22];
$txtclub=$data->sheets[0]['cells'][$i][23];
$unittype=$data->sheets[0]['cells'][$i][24];
我不明白这个问题是什么。我想执行此导入Excel数据功能。我希望用户可以为此上传自己的excel文件。所以请帮助我解决这个问题。
答案 0 :(得分:0)
$ allowedExts数组中是否为“.tmp”?请包含脚本的其余部分,并确定输出的行“文件名C:\ wamp \ tmp \ php1FC.tmp不可读”。
答案 1 :(得分:0)
在调用 move_uploaded_file 之后,您尝试打开不再存在的临时文件。
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
您需要打开&#34;上传/&#34; 。 $ _FILES [&#34;文件&#34;] [&#34;名称&#34;] 即可。 (为什么不使用你创建的 $ filename ?)
此外,您将 $ data-&gt; read()中存在的文件名传递给了 $ data-&gt; read(),为什么要创建处理程序呢? $ data-&gt; read()应该使用 $ handle 还是 $ filename ?检查一下。
只是为了添加另一个选项,MySQL有一个简洁的Excel工具/插件,可以将表直接连接到名为 MySQL for Excel 的文件。
更多信息:http://dev.mysql.com/doc/refman/5.7/en/mysql-for-excel.html