高分求助!如何把Mysql数据表导出成excel文档 50
我用php+mysql做了个学生信息系统,现在想把数据库中的学生信息表student_info的所有字段及记录导出成excel文档,方便进行信息统计、汇总。网上找了几种方...
我用php+mysql做了个学生信息系统,现在想把数据库中的学生信息表student_info的所有字段及记录导出成excel文档,方便进行信息统计、汇总。网上找了几种方法可是不成功,希望哪位高手指点指点,需要方便简单、切实可行的方法。
展开
7个回答
展开全部
方法一:进入到mysql的控制台,输入:
SELECT * INTO OUTFILE ‘./test.xls‘ FROM tb1 WHERE 1 ORDER BY id DESC LIMIT 0, 50;
这样,应该会在你的mysql的var/目录下产生一个test.xls的文件。。。
但是如果你的shell的登录帐户和mysql的运行账户不同,很可能这个方法就不适用了,因为你可以通过mysql控制台来产生这个文件,但是你却没有办法通过shell来对这个文件进行操作,因为用户不同,没有访问权限。
这个时候,同事告诉偶滴办法就重装登录了!!!
echo "SELECT * FROM tb1 WHERE 1 ORDER BY id DESC LIMIT 0, 50;"| /usr/local/mysql/bin/mysql -hlocalhost -uroot -pxxxxx > /tmp/test.xls
ok,把你的test.xls文件从tmp下载到本地打开来看看吧。。。
什么?中文乱码?
别着急。。。
因为office默认的是gb2312编码,服务器端生成的很有可能是utf-8编码,这个时候你有两种选择,
1.在服务器端使用iconv来进行编码转换,
iconv -futf8 -tgb2312 -otest2.xls test.xls
如果转换顺利,那么从server上下载下来就可以使用了。
转换如果不顺利,则会提示:iconv: illegal input sequence at position 1841 类似于这样的错误,
先把test.xls下载下来,这个时候文件是utf-8编码的,用excel打开,乱码。
把test.xls以文本方式打开,然后另存为,在编码选择ANSI编码,保存。
ok,再用excel打开,乱码问题,烟消云散。。。
SELECT * INTO OUTFILE ‘./test.xls‘ FROM tb1 WHERE 1 ORDER BY id DESC LIMIT 0, 50;
这样,应该会在你的mysql的var/目录下产生一个test.xls的文件。。。
但是如果你的shell的登录帐户和mysql的运行账户不同,很可能这个方法就不适用了,因为你可以通过mysql控制台来产生这个文件,但是你却没有办法通过shell来对这个文件进行操作,因为用户不同,没有访问权限。
这个时候,同事告诉偶滴办法就重装登录了!!!
echo "SELECT * FROM tb1 WHERE 1 ORDER BY id DESC LIMIT 0, 50;"| /usr/local/mysql/bin/mysql -hlocalhost -uroot -pxxxxx > /tmp/test.xls
ok,把你的test.xls文件从tmp下载到本地打开来看看吧。。。
什么?中文乱码?
别着急。。。
因为office默认的是gb2312编码,服务器端生成的很有可能是utf-8编码,这个时候你有两种选择,
1.在服务器端使用iconv来进行编码转换,
iconv -futf8 -tgb2312 -otest2.xls test.xls
如果转换顺利,那么从server上下载下来就可以使用了。
转换如果不顺利,则会提示:iconv: illegal input sequence at position 1841 类似于这样的错误,
先把test.xls下载下来,这个时候文件是utf-8编码的,用excel打开,乱码。
把test.xls以文本方式打开,然后另存为,在编码选择ANSI编码,保存。
ok,再用excel打开,乱码问题,烟消云散。。。
展开全部
function down_xls($data, $keynames, $name='dataxls') {
$xls[] = "<html><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
$xls[] = "<tr><td>ID</td><td>" . implode("</td><td>", array_values($keynames)) . '</td></tr>';
$data = 查询出来的数组,二维数组
$kn = array(
'cno' => '卡号',
);
foreach($data AS $cid => $one) {
$one['cno'] = $one['cno'];
}
}
down_xls($data, $kn, $name);
foreach($data As $o) {
$line = array(++$index);
foreach($keynames AS $k=>$v) {
$line[] = $o[$k];
}
$xls[] = '<tr><td>'. implode("</td><td style='vnd.ms-excel.numberformat:@'>", $line) . '</td></tr>';
}
$xls[] = '</table></body></html>';
$xls = join("\r\n", $xls);
header('Content-Disposition: attachment; filename="'.$name.'.xls"');
die(mb_convert_encoding($xls,'UTF-8','UTF-8'));
}
这样就可以生成xls文件了!
$xls[] = "<html><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
$xls[] = "<tr><td>ID</td><td>" . implode("</td><td>", array_values($keynames)) . '</td></tr>';
$data = 查询出来的数组,二维数组
$kn = array(
'cno' => '卡号',
);
foreach($data AS $cid => $one) {
$one['cno'] = $one['cno'];
}
}
down_xls($data, $kn, $name);
foreach($data As $o) {
$line = array(++$index);
foreach($keynames AS $k=>$v) {
$line[] = $o[$k];
}
$xls[] = '<tr><td>'. implode("</td><td style='vnd.ms-excel.numberformat:@'>", $line) . '</td></tr>';
}
$xls[] = '</table></body></html>';
$xls = join("\r\n", $xls);
header('Content-Disposition: attachment; filename="'.$name.'.xls"');
die(mb_convert_encoding($xls,'UTF-8','UTF-8'));
}
这样就可以生成xls文件了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下一个navcat,管理mysql的一个很好用的工具,到里面直接导出就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像程序叫phpexcel。用这个做导入导出,我试过很好用的!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询