$db = mysql_connect("localhost","root","1234");
mysql_select_db("it database",$db);// 输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="user_import.csv"');
header('Cache-Control: max-age=0');// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql ="select * from material";
//echo $sql;exit;
$stmt = $db->query($sql);// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');// 输出Excel列名信息
$head = array('Consignee','Email', 'Mobile','Address');
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'gbk', $v);
}// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;// 逐行取出数据,不浪费内存
while ($row = $db->fetchRow($stmt)) {
$cnt ++;
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt = 0;
}foreach ($row as $i => $v) {
$row[$i] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
}
这是我网上复制的一段代码,运行过后
excel里出现这段话<b>Fatal error</b>: Call to a member function query() on a non-object in <b>D:\wwwroot\exe\b.php</b> on line <b>13</b><br />
这个是什么意思啊?请高手帮我解释下?我该怎么修改。
我只是想把数据导出到excel表里。
mysql_select_db("it database",$db);// 输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="user_import.csv"');
header('Cache-Control: max-age=0');// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql ="select * from material";
//echo $sql;exit;
$stmt = $db->query($sql);// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');// 输出Excel列名信息
$head = array('Consignee','Email', 'Mobile','Address');
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'gbk', $v);
}// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;// 逐行取出数据,不浪费内存
while ($row = $db->fetchRow($stmt)) {
$cnt ++;
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt = 0;
}foreach ($row as $i => $v) {
$row[$i] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
}
这是我网上复制的一段代码,运行过后
excel里出现这段话<b>Fatal error</b>: Call to a member function query() on a non-object in <b>D:\wwwroot\exe\b.php</b> on line <b>13</b><br />
这个是什么意思啊?请高手帮我解释下?我该怎么修改。
我只是想把数据导出到excel表里。
解决方案 »
- 按站点存放日志,在线等
- 急!PHP
- 如何向框架传递参数?在线等待^^^^^^^^^^^^^
- 关于JQUERY传递参数的问题
- 回车符变成黑方格导致的字符串不匹配的问题
- 为什么加上or die 语句后程序运行缓慢超时呢?iis5+php4环境
- 在PHP.ini中一打开php_oci8.dll连phpinfo()测试都不通过
- 再放100分,问:你是如何备份大于5M的mysql数据库的
- 有没有自动定义格式的PHP开发工具?
- 如何在php中能组织出'{"result":[{"id":"1","name":"j"}]}'这种格式的json啊
- php 发送邮件问题??????
- session 对象保存密码问题?
select m.Mat_name,m.Mat_mode,mo.MO_qty,mis.MIS_price,s.Stf_name,mo.MO_date,s.Stf_department
from material m,materialinstorage mis,materialoutstock mo,staff s
where m.Mat_id = mis.Mat_id
and mis.MIS_id = mo.MIS_id
and mo.Stf_id = s.Stf_id
and left(MIS_date,6) = '201109' and Mat_category = 0
order by Stf_department
显示出来的效果是
matname mode qty price staff date dept.
1 1 45 45 20110928 20110928
1 1 45 45 20110926 20110926
1 1 50 50 20110928 20110928
1 1 50 50 20110924 20110924
1 1 45 45 20110928 20110928
1 1 45 45 20110926 20110926
1 1 50 50 20110914 20110914
数据怎么会连续显示两次的?没显示出来的估计也是中文的缘故。
当然可以用中文。你数据库什么编码?如果本身就是gbk的话,不需要后面的转码。文件也保存为gbk吧。
我现在吧utf-8改成了GB2312,中文显示了。
可是数据为什么会重复两遍显示呢
这个改为:while ($row = mysql_fetch_array($stmt),MYSQL_NUM) {
试试。
Parse error: syntax error, unexpected ',' in D:\wwwroot\exe\b.php on line 42
这个是什么意思啊?
while ($row = mysql_fetch_array($stmt,MYSQL_NUM))
哈哈,没仔细。
这是最简单的导出,当然功能有限,如果需要华丽点的。建议用PHPExcel。