php查询后并导出excel,PHP如何将查询结束导出Excel

PHPexcel 导出 汇出 用户编号: 用户名:用户编号用户名$row[0]$row[1]";}sqlsrv_free_stmt( $query);sqlsrv_close( $conn);?>

回复讨论(解决方案)

用phpexcel

http://www.jz123.cn/text/2319267.html

fputcsv()

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment; filename="aaa.xls");

用phpexcel

http://www.jz123.cn/text/2319267.html

+1

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment; filename="aaa.xls");

+1

其实是excel的功能强大..$str="A1\tA2\tA3\n";$str.="B1\tB2\tB3\n";你把这些字符写入到文件中,后缀名改为.xls,excel直接就能读..

其实是excel的功能强大..$str="A1\tA2\tA3\n";$str.="B1\tB2\tB3\n";你把这些字符写入到文件中,后缀名改为.xls,excel直接就能读..

但实际上不是真正的xls文件。

其实是excel的功能强大..$str="A1\tA2\tA3\n";$str.="B1\tB2\tB3\n";你把这些字符写入到文件中,后缀名改为.xls,excel直接就能读..

但实际上不是真正的xls文件。

$query = sqlsrv_query($conn,$sql);if( $query === false) { die( print_r( sqlsrv_errors(), true) );}while($row = sqlsrv_fetch_array($query)) { echo$objPHPExcel->getActiveSheet()->setCellValue('A2', convertUTF8($row[0]))->setCellValue('B2', convertUTF8($row[1]))->setCellValue('C2', convertUTF8($row[2]))->setCellValue('D2', convertUTF8($row[3]))->setCellValue('E2', convertUTF8($row[4]))->setCellValue('F2', convertUTF8($row[5]))->setCellValue('G2', convertUTF8($row[6]))->setCellValue('H2', convertUTF8($row[7]))->setCellValue('I2', convertUTF8($row[8]))->setCellValue('J2', convertUTF8($row[9]))->setCellValue('K2', convertUTF8($row[10]))->setCellValue('L2', convertUTF8($row[11]));}请问这段代码有问题吗?为什么在执行时报以下错误:

Catchable fatal error: Object of class PHPExcel_Worksheet could not be converted to string in D:\MarsdenWeb\Report\output_002.php on line 19

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

->setCellValue(' A2', convertUTF8($row[0]))

->setCellValue(' B2', convertUTF8($row[1]))

->setCellValue(' C2', convertUTF8($row[2]))

->setCellValue('D2', convertUTF8($row[3]))

->setCellValue('E2', convertUTF8($row[4]))

->setCellValue('F2', convertUTF8($row[5]))

->setCellValue('G2', convertUTF8($row[6]))

->setCellValue('H2', convertUTF8($row[7]))

->setCellValue('I2', convertUTF8($row[8]))

->setCellValue('J2', convertUTF8($row[9]))

->setCellValue('K2', convertUTF8($row[10]))

->setCellValue('L2', convertUTF8($row[11]));

标红的部分循环中没有更改,所以会覆盖之前单元格的值。

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

->setCellValue(' A2', convertUTF8($row[0]))

->setCellValue(' B2', convertUTF8($row[1]))

->setCellValue(' C2', convertUTF8($row[2]))

->setCellValue('D2', convertUTF8($row[3]))

->setCellValue('E2', convertUTF8($row[4]))

->setCellValue('F2', convertUTF8($row[5]))

->setCellValue('G2', convertUTF8($row[6]))

->setCellValue('H2', convertUTF8($row[7]))

->setCellValue('I2', convertUTF8($row[8]))

->setCellValue('J2', convertUTF8($row[9]))

->setCellValue('K2', convertUTF8($row[10]))

->setCellValue('L2', convertUTF8($row[11]));

标红的部分循环中没有更改,所以会覆盖之前单元格的值。

不太明白你的意思,那我应该怎么改呢?

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

->setCellValue(' A2', convertUTF8($row[0]))

->setCellValue(' B2', convertUTF8($row[1]))

->setCellValue(' C2', convertUTF8($row[2]))

->setCellValue('D2', convertUTF8($row[3]))

->setCellValue('E2', convertUTF8($row[4]))

->setCellValue('F2', convertUTF8($row[5]))

->setCellValue('G2', convertUTF8($row[6]))

->setCellValue('H2', convertUTF8($row[7]))

->setCellValue('I2', convertUTF8($row[8]))

->setCellValue('J2', convertUTF8($row[9]))

->setCellValue('K2', convertUTF8($row[10]))

->setCellValue('L2', convertUTF8($row[11]));

标红的部分循环中没有更改,所以会覆盖之前单元格的值。

不太明白你的意思,那我应该怎么改呢?$i = 2;while($row = sqlsrv_fetch_array($query)) {$objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, convertUTF8($row[0])) ->setCellValue('B'.$i, convertUTF8($row[1])) ->setCellValue('C'.$i, convertUTF8($row[2])) ->setCellValue('D'.$i, convertUTF8($row[3])) ->setCellValue('E'.$i, convertUTF8($row[4])) ->setCellValue('F'.$i, convertUTF8($row[5])) ->setCellValue('G'.$i, convertUTF8($row[6])) ->setCellValue('H'.$i, convertUTF8($row[7])) ->setCellValue('I'.$i, convertUTF8($row[8])) ->setCellValue('J'.$i, convertUTF8($row[9])) ->setCellValue('K'.$i, convertUTF8($row[10])) ->setCellValue('L'.$i, convertUTF8($row[11]));$i++;}

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

->setCellValue(' A2', convertUTF8($row[0]))

->setCellValue(' B2', convertUTF8($row[1]))

->setCellValue(' C2', convertUTF8($row[2]))

->setCellValue('D2', convertUTF8($row[3]))

->setCellValue('E2', convertUTF8($row[4]))

->setCellValue('F2', convertUTF8($row[5]))

->setCellValue('G2', convertUTF8($row[6]))

->setCellValue('H2', convertUTF8($row[7]))

->setCellValue('I2', convertUTF8($row[8]))

->setCellValue('J2', convertUTF8($row[9]))

->setCellValue('K2', convertUTF8($row[10]))

->setCellValue('L2', convertUTF8($row[11]));

标红的部分循环中没有更改,所以会覆盖之前单元格的值。

不太明白你的意思,那我应该怎么改呢?$i = 2;while($row = sqlsrv_fetch_array($query)) {$objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, convertUTF8($row[0])) ->setCellValue('B'.$i, convertUTF8($row[1])) ->setCellValue('C'.$i, convertUTF8($row[2])) ->setCellValue('D'.$i, convertUTF8($row[3])) ->setCellValue('E'.$i, convertUTF8($row[4])) ->setCellValue('F'.$i, convertUTF8($row[5])) ->setCellValue('G'.$i, convertUTF8($row[6])) ->setCellValue('H'.$i, convertUTF8($row[7])) ->setCellValue('I'.$i, convertUTF8($row[8])) ->setCellValue('J'.$i, convertUTF8($row[9])) ->setCellValue('K'.$i, convertUTF8($row[10])) ->setCellValue('L'.$i, convertUTF8($row[11]));$i++;}

谢谢您!终于解决了导出问题。。。

但现在是自动保存的,有没有办法可以自己另存为呢?

$objPHPExcel>getActiveSheet()

->setCellValue()操作的结果是返回 PHPExcel_Worksheet 对象,把前面的echo去掉吧

去掉echo后,是不报错了,但while循环好像就失效了,导出的结果就只有一条数据。

->setCellValue(' A2', convertUTF8($row[0]))

->setCellValue(' B2', convertUTF8($row[1]))

->setCellValue(' C2', convertUTF8($row[2]))

->setCellValue('D2', convertUTF8($row[3]))

->setCellValue('E2', convertUTF8($row[4]))

->setCellValue('F2', convertUTF8($row[5]))

->setCellValue('G2', convertUTF8($row[6]))

->setCellValue('H2', convertUTF8($row[7]))

->setCellValue('I2', convertUTF8($row[8]))

->setCellValue('J2', convertUTF8($row[9]))

->setCellValue('K2', convertUTF8($row[10]))

->setCellValue('L2', convertUTF8($row[11]));

标红的部分循环中没有更改,所以会覆盖之前单元格的值。

不太明白你的意思,那我应该怎么改呢?$i = 2;while($row = sqlsrv_fetch_array($query)) {$objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, convertUTF8($row[0])) ->setCellValue('B'.$i, convertUTF8($row[1])) ->setCellValue('C'.$i, convertUTF8($row[2])) ->setCellValue('D'.$i, convertUTF8($row[3])) ->setCellValue('E'.$i, convertUTF8($row[4])) ->setCellValue('F'.$i, convertUTF8($row[5])) ->setCellValue('G'.$i, convertUTF8($row[6])) ->setCellValue('H'.$i, convertUTF8($row[7])) ->setCellValue('I'.$i, convertUTF8($row[8])) ->setCellValue('J'.$i, convertUTF8($row[9])) ->setCellValue('K'.$i, convertUTF8($row[10])) ->setCellValue('L'.$i, convertUTF8($row[11]));$i++;}

谢谢您!终于解决了导出问题。。。

但现在是自动保存的,有没有办法可以自己另存为呢?

不看文档啊?

最后的->save()

改为:

header("Content-Type: application/force-download");

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

header("Content-Type: application/download");

header('Content-Disposition:inline;filename="'.$FileName.'"');

header("Content-Transfer-Encoding: binary");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Pragma: no-cache");

$objWriter->save('php://output');

其实是excel的功能强大..$str="A1\tA2\tA3\n";$str.="B1\tB2\tB3\n";你把这些字符写入到文件中,后缀名改为.xls,excel直接就能读..

但实际上不是真正的xls文件。

嗯,确实不是,而且中文在国外看还有乱码的可能性,后来改成html的,不仅能解决乱码,而且样式也能控制,不得不说这excel太强大了

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值