3

当我使用 PHP 导出 Excel 时,任何人都可以帮助我如何删除此警告。

“您尝试打开的文件 'MyFile.xls' 的格式与文件扩展名指定的格式不同。在打开文件之前,请确认文件没有损坏并且来自受信任的来源。您要打开现在存档?”

我完全理解警告,说 Excel 内容具有不同的格式。我只是想知道如何/如何删除此警告

<?php
    header("Content-type:   application/x-msexcel; charset=utf-8");
    header("Content-Disposition: attachment; filename=MyFile.xls");
?>

现在我只有上面的代码,这意味着还没有显示,我试图在填充任何内容之前先解决这个问题。当前安装的版本是 MS Office 2007。我想尝试 PHPExcel,但我不确定它是否能解决问题。

提前致谢!

4

5 回答 5

2

PHPExcel 中的上述答案会给你很好的结果。但是如果你想用 corePHP 来实现它,那么这里是要实现的代码。

<?php

function xlsBOF() {
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
}
function xlsEOF() {
    echo pack("ss", 0x0A, 0x00);
}
function xlsWriteNumber($Row, $Col, $Value) {
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    echo pack("d", $Value);
}
function xlsWriteLabel($Row, $Col, $Value) {
    $L = strlen($Value);
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo $Value;
} 
// prepare headers information
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=\"export_".date("Y-m-d").".xls\"");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
// start exporting
xlsBOF();
// first row 
xlsWriteLabel(0, 0, "id");
xlsWriteLabel(0, 1, "name");
xlsWriteLabel(0, 2, "email");
// second row 
xlsWriteNumber(1, 0, 230);
xlsWriteLabel(1, 1, "John");
xlsWriteLabel(1, 2, "john@yahoo.com");
// third row 
xlsWriteNumber(2, 0, 350);
xlsWriteLabel(2, 1, "Mark");
xlsWriteLabel(2, 2, "mark@yahoo.com");
// end exporting
xlsEOF();
exit;

?>

来自http://krasimrtsonev.com/blog/article/php-export-mysql-data-to-xls-file的参考资料

于 2017-03-03T03:37:05.277 回答
1

您可能正在保存带有 XLS 扩展名的 CSV 文件。将 Content-type 更改为 text/csv 并将文件扩展名更改为 .csv,默认情况下它会在 Excel 中打开,并且应该会阻止显示此警告。

于 2012-08-03T09:36:06.357 回答
0

我也收到了这个警告。

然后我使用了PHPExcel。

可能对你有帮助。http://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home

于 2012-08-03T09:45:23.347 回答
0

您确定要导出 excel 文档吗?

如果是这样:尝试以下标题:

header("Pragma: public");
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="MyFile.xls"');

这不会给我的 MS Office 2007 安装错误

于 2012-08-03T09:36:55.927 回答
0

您可以使用 :

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="myfile.xls"');
header('Cache-Control: max-age=0');

或使用以下代码:

// 包含 PHPExcel_IOFactory

include 'PHPExcel/IOFactory.php';

$inputFileName = './sampleData/example1.xls';

//  Read your Excel workbook
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$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 row data array into your database of choice here
}

参考:

http://www.grad.clemson.edu/assets/php/phpexcel/documentation/api/__filesource/fsource_phpexcel__phpexceliofactory.php.html

于 2017-12-28T08:03:07.133 回答