代码如下:
<?php include("conn.php"); include_once './Classes/PHPExcel.php';
include_once './Classes/PHPExcel/IOFactory.php';
include_once './Classes/PHPExcel/Reader/Excel5.php'; //输出上传文件的信息
echo "文件名: " . $_FILES["file"]["name"] . "<br />";
echo "类型: " . $_FILES["file"]["type"] . "<br />";
echo "大小: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "缓存路径: " . $_FILES["file"]["tmp_name"]. " <br />";
echo "是否出错: ". $_FILES["file"]["error"]. " <br />"; //判断上传格式是否正确
if($_FILES["file"]["type"] != 'application/kset' && $_FILES["file"]["type"] != 'application/vnd.ms-excel' && $_FILES["file"]["type"] != 'application/octet-stream'){
echo "Error: 上传文件格式不正确!";
exit;
}
//将文件移动到指定文件夹
if(!move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/".$_FILES["file"]["name"])){
echo "Error: 将文件移动到指定文件夹时失败!";
exit;
}

$filename = "uploads/".$_FILES["file"]["name"];
$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format 

        //这里有问题
        $objPHPExcel = $objReader->load($filename); //$filename可以是上传的文件,或者是指定的文件
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数 
$sheetData = $objPHPExcel->getSheet(0)->toArray(null,true,true,true); echo iconv('utf-8','gbk',$objPHPExcel->getActiveSheet()->getCell("A1")->getValue())."<br />";
//var_dump($sheetData);
//插入数据库
for($key=2;$key<=$highestRow;$key++){
if($objPHPExcel->getActiveSheet()->getCell("A".$key)->getValue() != NULL){
$value = array();
for($clm='A'; $clm<='R'; $clm++){
$clm_val = iconv('utf-8','gbk',$objPHPExcel->getActiveSheet()->getCell("$clm$key")->getValue());
if($clm_val == NULL){ $clm_val = " ";}
array_push($value,$clm_val);
}
$sql = "insert into disaster_sites  values ('". implode ("','",$value) . "')";
//echo $sql;
mssql_query($sql,$conn);
}
}
 
//生成测试txt文件
// $test= '1:'.$highestRow.'______2:'.$highestColumn;
// $file_pointer = fopen("aaa.txt","a+");        
// fwrite($file_pointer,$test);
// fclose($file_pointer);?>页面显示如下图:如果将$objPHPExcel = $objReader->load($filename); 及以后语句注释则可以访问页面并输出上传文件信息

解决方案 »

  1.   

    去掉 //echo $sql; 的注释
    检查输出的指令条数是否有误差另外,你是直接将读取的数据入库的
    没考虑到读取的数据中也可能有特殊字符”'“
      

  2.   


    因为页面无法连接,看不到echo $sql;的输出。
    我在 $objPHPExcel = $objReader->load($filename);之前添加一个exit;页面可以正常访问;
    在$objPHPExcel = $objReader->load($filename);之后添加一个exit;页面就无法连接了。
    这是不是就可以确定是这条语句出错了。
      

  3.   

    如果是 在 $objPHPExcel = $objReader->load($filename);之前添加一个exit;页面可以正常访问
    那么你怎么说”即使无法显示网页,但插入数据库的操作已经完成了“(#2)
      

  4.   


    如果前后都不加exit,它可以把数据插入数据库。但就是显示为图片中那个页面。
      

  5.   


    导入文件有什么错呢
    难道跟我用的是金山WPS有关?
    那个文件中有好多空行,不知道这条语句有没有把空行忽略,
    if($objPHPExcel->getActiveSheet()->getCell("A".$key)->getValue() != NULL)
    反正在数据库中插入的是有数据的那几行。
      

  6.   

    你不觉得这与 ”在$objPHPExcel = $objReader->load($filename);之后添加一个exit;页面就无法连接了“
    矛盾吗?
    如果 $objReader->load($filename) 会出错的话,那么你的数据有如何能插入的呢?建议你打开 php 的错误显示功能
      

  7.   

    楼主解决了没,我也是这个错误, 我直接在for循环外面加了个自动跳转,一开始以为是for的问题,但是后来发现没错,后来又一行行注释,直到注释了这个$objPHPExcel = $objReader->load ( $filename );  才能执行下面的跳转代码。。
    求解如何搞定。。
      

  8.   

    楼主,我搞定了, 原因是因为不需要加载除phpexcel.php 以外的类就OK了,有问题可以继续问我 
      

  9.   

    我没有加载除phpexcel.php 以外的类,但还是出现楼主那个问题啊!
      

  10.   

    刚刚用页面跳转把问题盖过去了……
    header("Location:../experience.php?file=".$_FILES["file"]["name"]); exit;
    这里我的experience.php文件在upload_file.php上一级文件夹里,后面加那段是我在experience.php里加了一段对$_GET['file']的验证,这样上传后会有提示,以免多次上传:
    <?php
    if (isset($_GET['file'])){
    echo '<script type="text/javascript">
    alert("成功导入'.$_GET['file'].'");
    </script>  '; 
    }
    ?>
    给各位做个参考吧,希望大神出来解答出现之前那个问题的原因~
      

  11.   

    $objPHPExcel = new \PHPExcel();  
      

  12.   

    用了phpexcel,哈哈,没有遇到过这个问题,大概了看了问题。有可能是路劲问题。
    路径转换为真实的路径,不要相对,尝试一下。
      

  13.   

    经本人测试18楼Harajuku0回复于: 2014-08-27 17:35:55的答案是正解!!!!!!
    http://blog.micsite.net/2014/10/21/254.html
      

  14.   

    原因我也不太清楚,我也遇到过。
    你可以百度一下  “phpexcel load 连接被重置”后来我测试在代码后面加了 die(); 就解决原因是用到 PHPExcel_IOFactory::load() 时会 不停的向本页跳转
      

  15.   

    18楼答案正解!
    增加$objPHPExcel = new PHPExcel()
      

  16.   

    18楼是正确的。

    $objPHPExcel = $objReader->load($uploadfile);
    前加上
    $objPHPExcel = new PHPExcel();
    就OK了,看来大家都在用网上找的导入excel的例子。
    谢谢大家的回答啊
      

  17.   

    求助。增加$objPHPExcel = new PHPExcel() 并没有效果。同样是load出现问题。页面不自己die掉的话会导致服务器崩溃 测试die掉的话每一步都是有用的。569795939 QQ
      

  18.   

    我也是这个问题,报错为:
    The filename D:\wamp\xampp\tmp\phpEAB3.tmp is not recognised as an OLE file
    请问怎么解决呀!!!!!!!!!!!!!
      

  19.   

    我也是这个问题,
    执行到$objPHPExcel = $objReader->load($uploadfile);就不行了,有人解决了没啊
      

  20.   

    18楼正解,按照24楼的方法去做就好了~~网上的代码只适合在linux下跑,windows下跑有很多小问题啊·
      

  21.   

    我遇到这个问题,已解决。思路如下:
    1.本来导出后缀名为xlsx,被改为xls;导入时将test.xls 改为test.xlsx 之后,好了。
    2.
            //创建新的PHPExcel对象
            $objReader = PHPExcel_IOFactory::createReader('EXCEL2007' );
            $objReader->setReadDataOnly (true );    
            $objPHPExcel = $objReader->load('./upfile/test.xlsx');
      

  22.   

    $objReader = PHPExcel_IOFactory::createReader('EXCEL5' );
    试试