【问题标题】:PHPExcel_Reader_Exception recognised as an OLE filePHPExcel_Reader_Exception 被识别为 OLE 文件
【发布时间】:2018-02-13 08:16:38
【问题描述】:

请帮我阅读附件上传的 excel 文件。当我附加 XLS 格式时,我的 PHPExcel 阅读器无法正常工作。你觉得我哪里漏掉了?

HTML

<form role="form" id="myForm" class="add_customer_form" enctype="multipart/form-data">
    <label for="fileUpload">Upload File *</label>
    <input type="file" id="files" name="file[]" class="form-control"
      accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, text/plain, application/vnd.ms-excel"
    multiple required>
</form>

AJAX

//用法:$("#form").serializefiles();

(function($) {
    $.fn.serializefiles = function() {
        var obj = $(this);
        /* ADD FILE TO PARAM AJAX */
        var formData = new FormData();
        $.each($(obj).find("input[type='file']"), function(i, tag) {
            $.each($(tag)[0].files, function(i, file) {
                formData.append(tag.name, file);
            });
        });
        var params = $(obj).serializeArray();
        $.each(params, function (i, val) {
            formData.append(val.name, val.value);
        });
        return formData;
    };
})(jQuery);

$.ajax({
    url: base_url+'customer/customer_add',
    type: 'POST',
    data: values,
    cache: false,
    contentType: false,
    processData: false,
    success: function(data){ 
            console.log(data);
    }
});

PHP

foreach($_FILES["file"]['name'] as $file => $fname) {
    $file_path  = $_FILES["file"]["tmp_name"][$file];
    $extension = pathinfo($fname);

    if($extension['extension'] == 'xls') {
        $objReader = PHPExcel_IOFactory::createReader('Excel5');    
    }
    else {
        $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    }
    $inputFileType = PHPExcel_IOFactory::identify($file_path);
    $objPHPExcel = $objReader->load($file_path);

    $cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
    print_r($cell_collection); die();
}

显示错误

【问题讨论】:

    标签: javascript php jquery html phpexcel


    【解决方案1】:

    不要相信文件扩展名....xls 文件不是本机 Excel BIFF 格式文件,无论它可能声称是什么扩展名。 .xls 被用作 csv 文件或包含 html 标记的文件的扩展名是很常见的。

    使用 IO Factory 的identify() 方法告诉你使用什么阅读器;或者只是简单地使用 IO Factory load() 方法来选择正确的阅读器并为您加载文件。

    【讨论】:

    • 我在文件中发现了一个错误。在上传到codeigniter php之前如何修复文件?它说,文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非你相信它的来源等。
    • 如果你得到那个“错误”,那么它告诉你带有.xls扩展名的文件并不是真正的xls文件......让identify()方法工作正如我在回答中告诉你的那样
    猜你喜欢
    • 2015-12-12
    • 2017-02-19
    • 2021-06-28
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多