首页 > 解决方案 > 使用php将mysqli数据导出到excel时,所有字段都显示在一列中

问题描述

我编写了一个简单的 php 脚本来下载 excel 文件,其中包含一些通过 MySQLI 查询获取的 MySQLI 数据,当我使用英语数据时它工作正常,但是当我使用 utf 8 语言(如阿拉伯语)时,它显示所有数据在一个excel文件中的列,

这是代码,任何帮助将不胜感激。

<?php
$conn = new mysqli('localhost', 'root', '');
mysqli_select_db($conn, 'test_db');
mysqli_query($conn, "set names 'utf8'");
setlocale(LC_ALL, 'en_US.UTF-8');

$sql = "SELECT `user_name`,`user_q1`,`user_q2`,
                `user_q3`,`user_q4`,`user_q5` 
        FROM    `usertable`";

$setRec = mysqli_query($conn, $sql);

$columnHeader = '';
$columnHeader = "الاسم" . "\t" . "الاجابة 1" . "\t" . "الاجابة 2" . "\t". "الاجابة 3" . "\t". "الاجابة 4" . "\t". "الاجابة 5" . "\t";

$setData = '';
while ($rec = mysqli_fetch_row($setRec)) {
    $rowData = '';
    foreach ($rec as $value) {
        $value = '"' . $value . '"' . "\t";
        $rowData .= $value;
    }
    $setData .= trim($rowData) . "\n";
}

header("Content-type: application/octet-stream");

header("Content-Disposition: attachment; filename=User_Detail.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo ucwords($columnHeader) . "\n" . $setData . "\n";
?>

标签: phpexcelmysqli

解决方案


推荐阅读