用户编号: 用户名: 用户编号 用户名
回复讨论(解决方案) 用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太强大了
