如何修复Excel导出(PHP)中的“选项卡”?

时间:2012-10-18 20:28:03

标签: php excel encoding delimiter separator

我应用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)。

对此有何解决方案?

注意:使用“,”作为分隔符不适合我,因为在某些字段中我的值为“,”。

2 个答案:

答案 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;并且无需在内容类型标头中标识字符集。

相关问题