首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PHP将数据从MySQL导出到Excel

通过PHP将数据从MySQL导出到Excel
EN

Stack Overflow用户
提问于 2013-09-30 16:26:21
回答 4查看 13K关注 0票数 2

我将使用PHP将SQL中的数据导出到Excel (csv)。我可以将所有数据从SQL导出到Excel,但它是未知的日语。现在,我可以解决这个问题;但是其他问题是SQL中的每一行都会导出到Excel中的一个列中。

示例(SQL中的数据)

代码语言:javascript
复制
ccode    country
US       United State
UK       United Kingdom
FR       France
KO       Korea
JP       東京

导出到Excel后的

代码语言:javascript
复制
    A                  
1   ccode,country
2   US,United State
3   UK,United Kingdom
4   FR,France
5   KO,Korea
6   JP,東京

这里是我的代码

代码语言:javascript
复制
<?php

header("Content-type: text/csv; charset=UTF-8");
header('Content-Disposition: attachment; filename=Export.csv');
//connection
$con = mysql_connect('localhost', 'root', '');
if(!$con){
    echo "Error connection";
}
//select db
$select_db = mysql_select_db('country', $con);
if(!$select_db){
    echo "Error to select database";
}
mysql_set_charset("utf8", $con);

//Mysql query to get records from datanbase
$user_query = mysql_query('SELECT * FROM countries');

//While loop to fetch the records
$contents = "ccode,country\n";
while($row = mysql_fetch_array($user_query))
{
    $contents.=$row['ccode'].",";
    $contents.=$row['country']."\n";
}

$contents_final = chr(255).chr(254).mb_convert_encoding($contents, "UTF-16LE","UTF-8");
print $contents_final;

?>

这里是导出到Excel (csv)后我想要的

代码语言:javascript
复制
    A          B 
1   ccode      country
2   US         United State
3   UK         United Kingdom
4   FR         France
5   KO         Korea
6   JP         東京

有人能帮我解决这个问题吗?我很感激你的帮助!

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2013-09-30 16:42:45

你所做的已经是正确的。在Excel中导入csv文件时,请指定分隔符为逗号。或者,用制表符代替逗号作为分隔符。

票数 3
EN

Stack Overflow用户

发布于 2013-09-30 16:43:42

您不应该像正在做的那样手动创建CSV。考虑使用fputcsv()来完成以下操作:

代码语言:javascript
复制
//While loop to fetch the records
fputcsv('php://output', array('ccode','country'));
while($row = mysql_fetch_array($user_query, MYSQL_NUM)) {
    array_walk($row, function(&$item) {
          $item = mb_convert_encoding($item, "UTF-16LE","UTF-8");
    }
    fputcsv('php://output', $row); 
}

请注意,我还对每个字段值执行编码步骤。

使用此方法的好处是,它将在必要时正确地封装所有字段,以防止某些值破坏CSV格式。例如,如果您的数据库值中有一个包含,,那么您的方法就会中断,而使用适当的csv创建机制可以在没有问题的情况下处理这个问题。

这种方法的另一个额外好处是,如果您有大量数据集,这将使用更少的内存,因为每次只能在内存中保存一行数据(在输出数据并移到下一个数据行之前)。

票数 0
EN

Stack Overflow用户

发布于 2013-11-07 07:00:56

使用\t为$content变量获取excel工作表不同列中的数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19099160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档