-1

我应用此解决方案解决了将文件导出到 .CSV 和 Excel 的编码问题,并且它成功运行,但现在出现了另一个问题:

我在 PHP 中用作 Excel 文件分隔符的制表符 ("\t") 停止工作。在我解决上一个问题之前它正在工作。当我打开excel文件时,它显示如下:

“ColumnAColumbBColumnC”(全部放在一起)。

如果像 csv 一样导出它('Content-type: text/csv; charset=UTF-8')我成功了,但不是 Excel(Content-type: application/vnd.ms-excel; charset=UTF-8)。

有什么解决办法吗?

注意:使用“,”作为分隔符对我来说不是一个好的解决方案,因为我在某些字段中有“,”的值。

4

2 回答 2

9

我在 PHP 中用作 Excel 文件分隔符的制表符 ("\t") 停止工作。

对,那是正确的。

尽管如此,仍然有一种简单的方法可以导出到 Excel。

使用带有<td>and的表格<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。不需要库,为什么看起来复杂的事情尽可能简单。

于 2014-03-26T12:41:34.987 回答
2

如果您在字符串字段中有逗号并且想要使用逗号作为分隔符,那么您将字符串括在引号中......这就是 CSV 文件的工作方式。

所以我的假设是你没有使用 PHP 的内置fputcsv()函数来创建你的 csv 文件,否则你已经知道了......为什么不考虑使用它,因为它可以处理你不知道的所有小复杂性'似乎没有意识到。

请注意,Excel csv 文件确实使用制表符,并且通常编码为带有 BOM 的 UTF-16LE,而不是 UTF-8;并且无需在内容类型标头中识别字符集。

于 2012-10-18T22:48:09.737 回答