我正在尝试上传电子表格并使用 PHPExcel将其读入MysqL数据库.

对于.xlsx文件,它工作正常,但每当我尝试上传.ods文件时,它都会抛出错误:PHP致命错误:在PHPExcel_1.7.9 / Classes / PHPExcel / Reader /中的非对象上调用成员函数getNamespaces()第341行的OOCalc.PHP

出了什么问题?

HTML表格:

<form method="post" enctype="multipart/form-data">
Upload File: <input type="file" name="spreadsheet"/>
<input type="submit" name="submit" value="Submit" />
</form>

PHP(在同一个文件中):

//Check valid spreadsheet has been uploaded
if(isset($_FILES['spreadsheet'])){
if($_FILES['spreadsheet']['name']){
    if(!$_FILES['spreadsheet']['error'])
    {

        $inputFile = $_FILES['spreadsheet']['name'];
        $extension = strtoupper(pathinfo($inputFile,PATHINFO_EXTENSION));
        if($extension == 'XLSX' || $extension == 'ODS'){

            //Read spreadsheeet workbook
            try {
                 $inputFile = $_FILES['spreadsheet']['tmp_name'];
                 $inputFileType = PHPExcel_IOFactory::identify($inputFile);
                 $objReader = PHPExcel_IOFactory::createReader($inputFileType);
                 $objPHPExcel = $objReader->load($inputFile);
            } catch(Exception $e) {
                    die($e->getMessage());
            }

            //Get worksheet dimensions
            $sheet = $objPHPExcel->getSheet(0); 
            $highestRow = $sheet->getHighestRow(); 
            $highestColumn = $sheet->getHighestColumn();

            //Loop through each row of the worksheet in turn
            for ($row = 1; $row <= $highestRow; $row++){ 
                    //  Read a row of data into an array
                    $rowData = $sheet->rangetoArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);
                    //Insert into database
            }
        }
        else{
            echo "Please upload an XLSX or ODS file";
        }
    }
    else{
        echo $_FILES['spreadsheet']['error'];
    }
}
}

?>
将文件上载到Web服务器时,该文件将以随机名称保存在系统的临时文件夹中.

您尝试做的是给出您上传的文件的实际名称,但是因为该文件是在tmp文件夹中使用随机名称创建的.
您将需要使用tmp_name,它实际指向该随机命名文件.

另请注意,在名称中您只有上传的文件的名称而不是路径,
但是使用tmp_name,您可以获得文件的实际路径.

请参阅以下您将获得的文件上载示例.

array(
 [UploadFieldName]=>array(
    [name] => MyFile.jpg
    [type] => image/jpeg
    [tmp_name] => /tmp/PHP/PHP6hst32
    [error] => UPLOAD_ERR_OK
    [size] => 98174
  )
)

将代码更改为此代码

//Check valid spreadsheet has been uploaded
if(isset($_FILES['spreadsheet'])){
if($_FILES['spreadsheet']['tmp_name']){
if(!$_FILES['spreadsheet']['error'])
{

    $inputFile = $_FILES['spreadsheet']['tmp_name'];
    $extension = strtoupper(pathinfo($inputFile,PATHINFO_EXTENSION));
    if($extension == 'XLSX' || $extension == 'ODS'){

        //Read spreadsheeet workbook
        try {
             $inputFileType = PHPExcel_IOFactory::identify($inputFile);
             $objReader = PHPExcel_IOFactory::createReader($inputFileType);
                 $objPHPExcel = $objReader->load($inputFile);
        } catch(Exception $e) {
                die($e->getMessage());
        }

        //Get worksheet dimensions
        $sheet = $objPHPExcel->getSheet(0); 
        $highestRow = $sheet->getHighestRow(); 
        $highestColumn = $sheet->getHighestColumn();

        //Loop through each row of the worksheet in turn
        for ($row = 1; $row <= $highestRow; $row++){ 
                //  Read a row of data into an array
                $rowData = $sheet->rangetoArray('A' . $row . ':' . $highestColumn . $row,FALSE);
                //Insert into database
        }
    }
    else{
        echo "Please upload an XLSX or ODS file";
    }
}
else{
    echo $_FILES['spreadsheet']['error'];
}
}
}

?>

使用PHPExcel阅读电子表格的更多相关文章

  1. xcode4 – 如何将excel文件类型(xlsx)与iPhone应用程序相关联

    您好,我已经通过向项目构建添加文档类型并将Types字段设置为“com.microsoft.excel.xls”(请参阅屏幕截图),通过邮件应用程序打开.xls文件.我想对xlsx文件做同样的处理,但不能做.我尝试添加“com.microsoft.excel.xlsx”但是没有起作用解决方法我通过定义自定义UTI解决了如下.尝试将这些定义添加到您的info.plist中.它按预期工作.….

  2. phpexcel导入excel处理大数据(实例讲解)

    下面小编就为大家带来一篇phpexcel导入excel处理大数据(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. PHPExcel 修改已存在Excel的方法

    下面小编就为大家分享一篇PHPExcel 修改已存在Excel的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Yii框架中使用PHPExcel的方法分析

    这篇文章主要介绍了Yii框架中使用PHPExcel的方法,简单分析了Yii使用PHPExcel的相关操作技巧与注意事项,并附带说明了Yii的autoload机制,需要的朋友可以参考下

  5. thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)

    这篇文章主要介绍了thinkPHP+PHPExcel实现读取文件日期的方法,可实现针对时分秒的形式进行读取的功能,涉及PHPExcel中ExcelToPHP函数的相关使用方法,需要的朋友可以参考下

  6. PHPExcel笔记, mpdf导出

    这篇文章主要介绍了PHPExcel笔记, mpdf导出,需要的朋友可以参考下

  7. PHPExcel合并与拆分单元格的方法

    这篇文章主要介绍了PHPExcel合并与拆分单元格的方法,涉及PHPExcel中setCellValue与mergeCells方法的使用技巧,需要的朋友可以参考下

  8. PHPExcel导出2003和2007的excel文档功能示例

    这篇文章主要介绍了PHPExcel导出2003和2007的excel文档功能,结合实例形式分析了PHPExcel属性设置及文档导出操作相关技巧,需要的朋友可以参考下

  9. thinkPHP+phpexcel实现excel报表输出功能示例

    这篇文章主要介绍了thinkPHP+phpexcel实现excel报表输出功能,结合具体实例形式分析了thinkPHP整合PHPExcel实现针对Excel文件相关操作技巧,需要的朋友可以参考下

  10. PHPExcel简单读取excel文件示例

    这篇文章主要介绍了PHPExcel简单读取excel文件的方法,结合实例形式简单分析了PHPExcel针对Excel文件的读取操作技巧,需要的朋友可以参考下

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部