作者:陈雅如7959 | 来源:互联网 | 2023-12-11 00:29
本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。
我写了PHP代码是为了在csv(excel)中导出一个表。
我的表格有6列:Timestamp,Order number,Last Name,First Name,Phone number,e-mail address.
字符集是utf8。
我的代码是:
$cOnn= mysqli_connect("localhost","username","password","database");
$filename = "FILENAME";
$fp = fopen('php://output','w');
$query = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='mydatabase' AND TABLE_NAME='myTableName'";
$result = mysqli_query($conn,$query);
while ($row = mysqli_fetch_row($result)) {
$header[] = $row[0];
}
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
fputcsv($fp,$header);
$query = "SELECT * FROM `MyTableName` order by `LNAME`";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_row($result)) {
fputcsv($fp,$row);
}
exit;
?>
因此,我有我的excel文件,但不幸的是,有些名称是用希腊语写的,我在导出文件中看到像"ΣΟΦΙΑ".
这样的字符
有人可以帮我解决这个问题吗?
这是一个编码问题,请在标头中使用charset = UTF-8,如下所示:
替换此行:
header('Content-type: application/csv');
此行:
header("content-type:application/csv;charset=UTF-8");
,
谢谢,我尝试了一下但没有成功。
导出文件具有相同的结果。
我不是程序员,我对php和sql的了解很差。
但是我找到了一种解决方法。我尝试过:
$con = mysqli_connect("localhost","MyUsername","MyPassword","MyDatabase");
if (mysqli_connect_errno())
{
die('Could not connect: ' . mysqli_connect_error());
}
mysqli_select_db($con,"MyDatabase");
$sql = "SELECT * FROM `MyTableName` order by `LNAME`";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
echo ("");
echo ("- " . utf8_decode($row['LNAME']) . " " . utf8_decode($row['FNAME']) . " " . $row['PHONE'] . " " . utf8_decode($row['EMAIL'])."
");
echo ("
");
}
mysqli_close($con);
?>
因此,我得到一个网页列表,所有名称和字符均可读。
虽然,我无法考虑如何使用“ utf8_decode”来使csv文件具有相同的结果。
有什么想法吗?
,
您是否正在Excel中打开CSV文件?这篇文章介绍了如何向文件添加UTF-8字节顺序标记(BOM),以便Excel 2007和更高版本将正确识别编码:Microsoft Excel mangles Diacritics in .csv files?