PHP中的Excel文件上传

时间:2015-12-13 11:59:23

标签: php excel

我正在尝试使用PHP上传Excel文件。我正在使用WAMP服务器和编写的PHP代码将Excel文件上传到同一个文件夹中。

我保存了一个Excel文件,所以如果我上传保存的文件,那么它可以正常工作,但如果我尝试从不同的位置上传另一个Excel文件,即从桌面上传,则显示abc.xls不可读。

我的代码如下:

<?php
ini_set("display_errors",1);
require_once 'excel_reader2.php';
require_once 'db.php';

if(isset($_POST["btnImport"]))
                 {
                    if(!empty($_FILES["excelFile"]["tmp_name"]))
                     {
                        $fileupload = $_FILES["excelFile"]["name"];                          
                        $fileName = explode(".",$_FILES["excelFile"]["name"]);
                        if($fileName[1]=="xls"||$fileName[1]=="xlsx")
                        {
                        $data = new Spreadsheet_Excel_Reader($fileupload);
                        //echo "Total Sheets in this xls file: ".count($data->sheets)."<br /><br />";
                        $html="<table border='1'>";
                        for($i=0;$i<count($data->sheets);$i++) // Loop to get all sheets in a file.
                            {   
                                if(count(@$data->sheets[$i]['cells'])>0) // checking sheet not empty
                                {
                            //  echo "Sheet $i:<br /><br />Total rows in sheet $i  ".count($data->sheets[$i]['cells'])."<br />";
                                for($j=1;$j<=count($data->sheets[$i]['cells']);$j++) // loop used to get each row of the sheet
                                { 
                                $html.="<tr>";
                                for($k=1;$k<=count($data->sheets[$i]['cells'][$j]);$k++) // This loop is created to get data in a table format.
                                {
                                    $html.="<td>";
                                    @$html.=$data->sheets[$i]['cells'][$j][$k];
                                $html.="</td>";
                                }
                                    @$data->sheets[$i]['cells'][$j][1];
                                    @$ques = mysql_real_escape_string($data->sheets[$i]['cells'][$j][1]);
                                    $opt1 = mysql_real_escape_string($data->sheets[$i]['cells'][$j][2]);
                                    $opt2 = mysql_real_escape_string($data->sheets[$i]['cells'][$j][3]);
                                    $opt3 = mysql_real_escape_string($data->sheets[$i]['cells'][$j][4]);
                                    @$opt4 = mysql_real_escape_string($data->sheets[$i]['cells'][$j][5]);
                                    @$correct = mysql_real_escape_string($data->sheets[$i]['cells'][$j][6]);
                                    @$Level = mysql_real_escape_string($data->sheets[$i]['cells'][$j][7]);
                                    @$Category = mysql_real_escape_string($data->sheets[$i]['cells'][$j][8]);
                                    @$explain = mysql_real_escape_string($data->sheets[$i]['cells'][$j][9]);

$nithi = "INSERT INTO `question` VALUES (NULL,'".$ques."','".$opt1."','".$opt2."','".$opt3."','".$opt4."','".$correct."','".$Level."','".$Category."','".$explain."')";

if (!mysql_query($nithi,$connection))
{
  die('Error: ' . mysql_error());
}

$result = mysql_query("SET NAMES utf8");//the main trick
$cmd = "select * from TAMIL";
$result = mysql_query($cmd);

    }
    }

                 }}}}
                 if(@$result){
    echo "Questions uploaded successfully";
                 }
                 ?>

如何从不同位置上传Excel文件?

1 个答案:

答案 0 :(得分:2)

在PHP上传文件时,会将其放入临时文件夹中。

在您的代码中,没有要求将上传的文件从临时位置移动到所需的位置。相反,您只需检查$_FILES["excelFile"]["tmp_name"],然后直接使用显然不正确的$_FILES["excelFile"]["name"]

使用move_uploaded_file()功能移动文件,请参阅文档:http://php.net/move_uploaded_file