我应用this solution来解决我将文件导出到.CSV和Excel的编码问题,并且它成功运行,但现在出现了另一个问题:
我在PHP中使用的标签(“\ t”)作为Excel文件的分隔符停止工作。在我解决上一个问题之前它正在工作。当我打开excel文件时,显示如下:
“ColumnAColumbBColumnC”(全部在一起)。
如果导出它像csv ('Content-type: text/csv; charset=UTF-8'
)我取得了成功,但不是Excel(Content-type: application/vnd.ms-excel; charset=UTF-8
)。
对此有何解决方案?
注意:使用“,”作为分隔符不适合我,因为在某些字段中我的值为“,”。
答案 0 :(得分:9)
我在PHP中使用的标签(" \ t")作为Excel文件的分隔符停止工作。
是的,这是正确的。
尽管如此,仍然有一种简单的方法可以导出到Excel。
使用包含<td>
和<tr>
的表格,这确实很好。
一个例子:
<?php
header("Content-Type: text/plain");
echo "<table border='1'>";
echo "<tr>";
echo "<th>Name</th>";
echo "<th>First Name</th>";
echo "<th>Department</th>";
echo "<th>Date</th>";
echo "<th>Topic</th>";
echo "<th>State</th>";
echo "<th>E-mail</th>";
echo "<th>Place</th>";
echo "<th>Registration fee</th>";
echo '</tr>';
echo '</table>';
header("Content-disposition: attachment; filename=example_export_to_excel.xls");
}
?>
这非常适合导出到excel。 不需要库,为什么看起来很简单,因为它可以。
答案 1 :(得分:2)
如果您在字符串字段中有逗号并希望使用逗号作为分隔符,则将该字符串括在引号中......这就是CSV文件的工作方式。
所以我的假设是你没有使用PHP的内置fputcsv()函数来创建你的csv文件,否则你已经知道了...为什么不考虑使用它,因为它处理所有的你似乎并不知道的复杂错综复杂。
请注意,Excel csv文件确实使用了标签,通常使用BOM而不是UTF-8编码为UTF-16LE;并且无需在内容类型标头中标识字符集。