PHP创建的Excel工作表在打开时会产生错误

迈克尔·阿黛尔(Michael Adair)

因此,我当前的代码可以100%工作,文件已经制作好并在excel中打开。但是在打开时,必须点击一些错误才能打开文件。它们如下:

“ address-book.xls”的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任其来源,否则请不要打开它。您是否仍要打开它?

然后:

Excel已检测到'address-book.xls是SYLK文件,但无法加载它。文件错误或不是SYLK文件格式。单击“确定”尝试以其他格式打开文件。

然后最后:

“ address-book.xls”的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任其来源,否则请不要打开它。您是否仍要打开它?

在那之后,它无奈地打开了。这是创建它的代码。格式化电子表格的任何帮助(例如使单元格足够大以容纳内容)都将非常有用。但是消除打开时的错误是我的首要任务。

<?PHP
require_once('conn.php');

$colnames = array(
    'id' => "ID",
    'Title' => "Title",
    'First_Name' => "First name",
    'Last_Name' => "Last Name",
    'Address' => "Address",
    'City' => "City",
    'State' => "State",
    'Zipcode' => "Zipcode",
    'Home_Phone' => "Home Phone",
    'Cell_Phone' => "Cell Phone",
    'Email1' => "Email #1",
    'Email2' => "Email #2"
);

function map_colnames($input){
    global $colnames;
    return isset($colnames[$input]) ? $colnames[$input] : $input;
}
function cleanData(&$str){
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

$filename = "address-book";

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=".$filename.".xls"); 
header("Pragma: no-cache"); 
header("Expires: 0");
$flag = false;
$sql = "SELECT * FROM ".$sDB_table." ORDER BY Last_Name";
$query = $sDBConn -> prepare($sql);
$query -> execute();
while(false !== ($row = $query->fetch(PDO::FETCH_ASSOC))) {
    if(!$flag){
        $firstline = array_map(__NAMESPACE__ . '\map_colnames', array_keys($row));
        echo implode("\t", $firstline) . "\r\n";
        $flag = true;
    }
    array_walk($row, __NAMESPACE__ . '\cleanData');
    echo implode("\t", array_values($row)) . "\r\n";
}
exit;

?>

PHPExcel错误:

$colnames = array("Title","First name","Last Name","Address","City","State","Zipcode","Home Phone","Cell Phone","Email #1","Email #2");
$col = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');

// Add Headers
for($i=0;$i<count($colnames);$i++){
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue($col[$i]."1", $colnames[$i]);
}

$sql = "SELECT * FROM ".$sDB_table." ORDER BY Last_Name";
$query = $sDBConn -> prepare($sql);
$query -> execute();

$rownum = 1;
//Add Content
while(false !== ($row = $query->fetch(PDO::FETCH_ASSOC))) {
    $rownum++;
    for($i=0;$i<count($row);$i++){
        $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue($col[$i]."".$rownum, $row[$i]);        
    }
}

当我打了while语句时,就会发生错误,如果我把那部分拿出来,它就会起作用。

马克·贝克

问题ID出在文件的前两个字节。这是SYLK文件的签名,SYLK文件是Multiplan使用的旧电子表格格式(符号链接交换-SYLK-文件格式),是Microsoft Excel的前身。

解决此问题的最简单方法是避免出现ID标题,而是使用Id(IIRC,SYLK签名区分大小写)或Key其他某种文本值


您要使用xls扩展名保存文件,但实际上并没有使用Excel格式,而只是使用了csv格式。因此MS Excel将抱怨格式与扩展名不匹配.csv或创建一个真正的BIFF格式的Excel文件


Any help with formatting the spreadsheet, such as having the cells be big enough for the content would be great.

您正在使用的格式csv(带有制表符分隔符)不支持任何格式,包括列宽。如果需要,则需要切换为真正的电子表格格式(碰巧的是,SYLK是真正的电子表格格式,尽管它已经过时了,我不特别推荐),例如BIFF(用于真正的xls文件),OfficeOpenXML(用于xlsx)文件,OASIS用于ods文件。


我用于OfficeOpenXML xlsx文件的标题:

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行 VB 代码的 Excel 工作表在打开新工作簿时出错

来自分类Dev

Excel VBA-始终在打开状态下显示工作表

来自分类Dev

删除工作表后打开POI错误Excel

来自分类Dev

从PowerPoint打开Excel工作表

来自分类Dev

在打开qlikview文件时设置默认工作表(标签)

来自分类Dev

如何使此宏在打开的工作表上运行?

来自分类Dev

在打开用户窗体时启用excel工作簿

来自分类Dev

创建选项卡栏和小部件后,模拟器在打开应用程序时会给出此类错误

来自分类Dev

从datagridview导出的excel文件在打开VB时显示错误

来自分类Dev

无法在PHP Excel中创建多个工作表

来自分类Dev

我如何在 C# 中通过数字获取 Excel 中的工作表以及如何在打开它后关闭 Excel applicatin

来自分类Dev

Excel工作表名称错误

来自分类Dev

从ASP.NET MVC创建打开的XML excel工作表时出错

来自分类Dev

从Access VBA编辑打开的Excel工作表

来自分类Dev

尝试使用 R 在 Excel 工作簿中创建多个工作表,但在几次后收到错误

来自分类Dev

使用OpenXML打开Excel工作表时文件包含损坏的数据错误

来自分类Dev

从数据表创建Excel工作表

来自分类Dev

Visual Studio在打开Web应用程序解决方案时会创建bin文件夹吗?

来自分类Dev

Excel VBA立即窗口在测试我的函数时会产生空白行,但在测试内置函数时会正常工作

来自分类Dev

Excel VBA立即窗口在测试我的函数时会产生空白行,但在测试内置函数时会正常工作

来自分类Dev

Excel在打开特定工作簿时尝试“访问打印机”

来自分类Dev

使用sqlite从Excel工作表创建数据库,OperationalError:“ Android”附近:语法错误

来自分类Dev

在Android中创建Excel工作表

来自分类Dev

使用多个工作表创建Excel

来自分类Dev

在android中创建Excel工作表

来自分类Dev

从 Excel 工作表创建结构数组

来自分类Dev

Chrome选择框选项文本在打开时会变形

来自分类Dev

excel在打开使用openpyxl创建的文件时遇到问题

来自分类Dev

在Oracle中创建表会产生“缺少右括号”错误

Related 相关文章

  1. 1

    运行 VB 代码的 Excel 工作表在打开新工作簿时出错

  2. 2

    Excel VBA-始终在打开状态下显示工作表

  3. 3

    删除工作表后打开POI错误Excel

  4. 4

    从PowerPoint打开Excel工作表

  5. 5

    在打开qlikview文件时设置默认工作表(标签)

  6. 6

    如何使此宏在打开的工作表上运行?

  7. 7

    在打开用户窗体时启用excel工作簿

  8. 8

    创建选项卡栏和小部件后,模拟器在打开应用程序时会给出此类错误

  9. 9

    从datagridview导出的excel文件在打开VB时显示错误

  10. 10

    无法在PHP Excel中创建多个工作表

  11. 11

    我如何在 C# 中通过数字获取 Excel 中的工作表以及如何在打开它后关闭 Excel applicatin

  12. 12

    Excel工作表名称错误

  13. 13

    从ASP.NET MVC创建打开的XML excel工作表时出错

  14. 14

    从Access VBA编辑打开的Excel工作表

  15. 15

    尝试使用 R 在 Excel 工作簿中创建多个工作表,但在几次后收到错误

  16. 16

    使用OpenXML打开Excel工作表时文件包含损坏的数据错误

  17. 17

    从数据表创建Excel工作表

  18. 18

    Visual Studio在打开Web应用程序解决方案时会创建bin文件夹吗?

  19. 19

    Excel VBA立即窗口在测试我的函数时会产生空白行,但在测试内置函数时会正常工作

  20. 20

    Excel VBA立即窗口在测试我的函数时会产生空白行,但在测试内置函数时会正常工作

  21. 21

    Excel在打开特定工作簿时尝试“访问打印机”

  22. 22

    使用sqlite从Excel工作表创建数据库,OperationalError:“ Android”附近:语法错误

  23. 23

    在Android中创建Excel工作表

  24. 24

    使用多个工作表创建Excel

  25. 25

    在android中创建Excel工作表

  26. 26

    从 Excel 工作表创建结构数组

  27. 27

    Chrome选择框选项文本在打开时会变形

  28. 28

    excel在打开使用openpyxl创建的文件时遇到问题

  29. 29

    在Oracle中创建表会产生“缺少右括号”错误

热门标签

归档