导出 xls 文件对于 php 中的导入时间不可读

Posted

技术标签:

【中文标题】导出 xls 文件对于 php 中的导入时间不可读【英文标题】:Export xls file not readable for import time in php 【发布时间】:2015-07-31 06:19:21 【问题描述】:

我正在使用下面的代码导出 xls 文件 abd 它是工作文件,但我的问题是当我尝试使用 require "XLS/Excel/reader.php" 库读取文件时,它返回错误 "文件不可红色"。 当我保存为导出 xls 文件并尝试导入它时。

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/xls");
header("Content-Disposition: attachment; filename=test.xls");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
// start exporting
xlsBOF();
xlsWriteLabel(0, 0, "id");
xlsWriteLabel(0, 1, "name");
xlsWriteLabel(0, 2, "email");
xlsWriteNumber(1, 0, 230);
xlsWriteLabel(1, 1, "John");
xlsWriteLabel(1, 2, "john@yahoo.com");
xlsWriteNumber(2, 0, 350);
xlsWriteLabel(2, 1, "Mark");
xlsWriteLabel(2, 2, "mark@yahoo.com");
xlsEOF();

【问题讨论】:

【参考方案1】:

使用http://phpexcel.codeplex.com/ 库导出它会正常工作。

$objPHPExcel = new PHPExcel(); 
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'Hello'); 
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B2', 'world!'); 
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1', 'Hello'); 
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D2', 'world!'); 

【讨论】:

以上是关于导出 xls 文件对于 php 中的导入时间不可读的主要内容,如果未能解决你的问题,请参考以下文章

PHP 和 JS 导入导出csv表格(上)

PHP 和 JS 导入导出csv表格(上)

在mysql中,excel文件数据的导出和导入

php中如何导入导出CSV格式的文件

如何将xls的资料导入到oracle数据库中

Java实现文件批量导入导出实例(兼容xls,xlsx)