excel 模板
A B C D
1 姓名 性别 年龄 入学时间
2
3
..sql 中有表people 字段 name/sex/age/time能不能通过php语言 将sql表中的内容 根据我查询的结果 写入excel吗?就像php中通过 表格$row[]输出结果类似的样子需要学习哪些东西? 有没有一些比较详细的例子?
A B C D
1 姓名 性别 年龄 入学时间
2
3
..sql 中有表people 字段 name/sex/age/time能不能通过php语言 将sql表中的内容 根据我查询的结果 写入excel吗?就像php中通过 表格$row[]输出结果类似的样子需要学习哪些东西? 有没有一些比较详细的例子?
官网上有例子
这个成员函数应该是什么内容? 谢谢
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);$fp = fopen("data.txt", 'w+');foreach ($list as $fields) {
fputcsv($fp, $fields, "\t");
}fseek($fp, 0, SEEK_SET);
echo fread($fp, filesize('data.txt'));fclose($fp);
?>
推荐我常用的一个方法,用header实现首先按照你需要导出的报表样式,新建一个excel,弄完之后保存,这个时候保存为xml 2003格式的,保存好之后,用记事本打开,之后像组织网页一样,把数据组织进去然后用以下的代码:header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$filename");
echo $excel_content;上面的 $excel_content 就是你组织好的一串数据
根据http://cclinux.blog.51cto.com/1215045/790883 成功输出数据但是遇到了一些问题
我的search.php(action到demo2.php) 用于提交查询日期 demo2.php 用于输出csv的处理
1.我用notepad++看 格式为无BOM的UTF-8 点击查询按钮后 弹出打开,保存,取消的对话框, 选择 能够输出 但是中文乱码
转化为普通的UTF-8编码后,直接将结果显示在了页面demo2.php 但是中文能正常显示了 什么原因? 还是想保留那种弹出对话框的方式
2.打开的时候保留着那些html标签,如何去掉 谢谢demo2.php的代码<?php
header('Content-Type:application/vnd.ms-excel;charset=utf-8');
header('Content-Disposition: attachment;filename="shuju.csv"');
header('Cache-Control:max-age=0');
date_default_timezone_set (PRC);?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head><body>
<?php
$date1=$_POST['date1'];
$date2=$_POST['date2'];
@$con = mysql_connect("localhost","root","mysql");
mysql_query('set names utf8');
if (!$con){
die("数据库链接失败:".mysql_error());
exit;
}
$data = mysql_select_db("BERecord",$con);if(!$data){
echo mysql_error();
mysql_close($con); //关闭数据库链接
exit;
}
else{
//$sql = "select * from record";
$sql = "select * from record where searchtime between '$date1' and '$date2'";$result = mysql_query($sql,$con);$fp = fopen("php://output","a");
$head = array("1","2");
foreach($head as $i => $v){
// $head[$i] = iconv('utf-8','gb2312',$v);
$head[$i] = mb_convert_encoding("$v","UTF-8","gb2312");
}
fputcsv($fp,$head);while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
fputcsv($fp,$row);
echo "<br>";
}
mysql_close($con);
}
?>
</body>
</html>
帮我看下10楼 这个有什么问题? 我看中文乱码 说是跟BOM头有关
2:在代码中把那些html标签删掉就是了。
在demo2.php这个页面 我看别人直接改的 mysql_query('set names gb2312'); 其他的用来取值的页面都是utf8这样改了之后 用excel打开的结果是中文的了 但是我在mysql的字段里有mencode这个 人员编号的设置 字段结果 mencode varchar(8) utf8_general_ci 否
我存入的第一个mencode是 000001 导入成csv后,这里的0就没有了 要是保留的话 应该如何处理? 谢谢
line 44就是fputcsv($fp,array_map('zero_change',$row));这句<b>Warning</b>: array_map() [<a href='function.array-map'>function.array-map</a>]: The first argument 'zero_change' should be either NULL or a valid callback in <b>C:\AppServ\www\BE\demo2.php</b> on line <b>44</b><br /><b>Warning</b>: fputcsv() expects parameter 2 to be array null given in <b>C:\AppServ\www\BE\demo2.php</b> on line <b>44</b><br />while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
fputcsv($fp,array_map('zero_change', $row));
echo "<br>";
}function zero_change($v) {
if (($v{0} == '0') && is_numeric($v)) {
//$v = '="' . $v . '"'; //第一种方式
$v = "\t{$v}"; //第二种方式
}
return $v;
}