我想从html代码创建excel表,我的代码在下面。
<?php
include_once("database/connect.php");
$db->mquery('a_menus','*');
$types=$db->fetchdata();
$menus=array();
$menus=$types->menu_name;
$file = "test.csv";
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$file");
$fh = fopen('php://output', 'w');
foreach($menus as $data){ fputcsv($fh, $data); }
fclose($fh);
?>
请你告诉我错误。
答案 0 :(得分:1)
我可以打开您的代码在MS Excel 2013中生成的文件,但它会显示警告:
&#34; test.xls&#34;的文件格式和扩展名不匹配。文件 可能已损坏或不安全。除非你相信它的来源,否则不要打开 它
您的代码存在一些未成年人问题,例如错误的字符集名称(应该是ISO-8859-1
)和令人困惑的Content-type
标头。很可能是因为使用旧版本的Excel无法识别HTML格式而导致问题。
要生成将由所有MS Excel版本(及其替代品)打开的正确CSV文件,并避免格式错误警告,请使用以下代码。
<?php
$file = "test.csv";
$results = array(
array('cell 1', 'cell 2')
);
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$file");
$fh = fopen('php://output', 'w');
foreach($results as $data){ fputcsv($fh, $data); }
fclose($fh);
?>
正如评论者所述,仅使用.xls
扩展名命名文件不会生成Excel文件。
答案 1 :(得分:-1)
其他答案不正确。
Excel可以读取扩展名为.xls且内置HTML的文件,而且您的代码适用于我。
我认为问题出在其他地方。