`

php 下载数据到excel表格 及编码问题

 
阅读更多
转自网络

PHP导出Excel文件时有两个主要的过程:

1、定义文件名

2、填充Excel数据

这两个过程中可能会出现一些PHP导出Excel乱码问题,下面我来说一下解决办法:

解决文件名的PHP导出Excel乱码:

乱码原因:客户使用的中文版Windows系统平台,而Windows平台的文件名编码为gb2312(gbk),而我们网页编码为了跟进现存潮流一般都采用utf-8(国际化)编码,这时当我们:header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"")时就会出现乱码,假如你的网页编码就是gb2312那就不用考虑编码问题了。

解决办法:对$filename转码,执行:iconv('utf-8", "gb2312", $filename)。假如你的环境不支持iconv函数可以换别的函数,只要能将$filename的编码转为gbk就行。
但是这样问题又会来了,linux用户又会出现文件名乱码(因为linux平台文件名不是gbk编码)。

考虑到这个问题我采用两个办法:第一:放弃一部分客户,毕竟windows系统用户占绝大部分。第二:像gmail一样,提供两个下载地址。一个文件名gbk编码,一个文件名utf-8编码。

解决Excel内数据的PHP导出Excel乱码:

PHP导出Excel乱码原因:网页编码与Excel编码不一致。

解决办法:既然编码不一致,那让其一致了就OK了。定义Excel的字符集:header("Content-Type: application/vnd.ms-excel; charset=UTF-8"),看到charset=UTF-8了吧,让其与您网页编码一致即可解决Excel内数据乱码的问题了,这个比较简单!


经过简单测试  可用
第一种方式:
<?php
$DB_Server = "localhost"; 
$DB_Username = "username"; //用户名
$DB_Password = "password"; //用户密码
$DB_DBName = "dbname"; //数据库名
$DB_TBLName = "tablename"; //表名
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect."); 
mysql_query('set names utf8'); //最好添加此处 否则汉字会乱码
$sql = "Select * from $DB_TBLName"; 
$ALT_Db = @mysql_select_db($DB_DBName, $Connect)or die("Couldn't select database"); 
$result = @mysql_query($sql,$Connect) or die(mysql_error()); 

$now_date = date('Y-m-d H:i');
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=$now_date.$file_ending");
header("Pragma: no-cache");
header("Expires: 0");

$now_date = date('Y-m-d H:i');
$title = "数据库名:$DB_DBName,数据表:$DB_TBLName,备份日期:$now_date";
echo("$title\n"); 
$sep = "\t"; 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
	echo mysql_field_name($result,$i) . "\t";   //列名 字段名
} 
print("\n"); 
$i = 0; 
while($row = mysql_fetch_row($result)){
	$schema_insert = ""; 
	for($j=0; $j<mysql_num_fields($result);$j++){
		if(!isset($row[$j])) 
			$schema_insert .= "NULL".$sep; 
		elseif ($row[$j] != "") 
			$schema_insert .= "$row[$j]".$sep; 
		else 
			$schema_insert .= "".$sep; 
	} 
	$schema_insert = str_replace($sep."$", "", $schema_insert); 
	$schema_insert .= "\t"; 
	print(trim($schema_insert)); 
	print "\n"; 
	$i++; 
}
return (true); 
?>




第二种方式:


function down_list() {
		if (!isset($_COOKIE['sys'])) {
			header("Location: admin.php");
		}
	    $user = new user();
	    $db = new mysql_db();
	    $userinfos = $user->query_users_sum($db);
	    header("Content-type:application/vnd.ms-excel; charset=UTF-8"); // 打印出的字符编码  根据表内容的编码
            header("Content-Disposition:filename=" . time() . ".xls");
            $result =" <table width='100%' height='21'  border='0' align='center'>";
            $result.=" <tr  align='center' style='border:1'>
                    <td>id</td>
                    <td>姓名</td>
                    <td>电话</td>
		    <td>QQ</td>
                    <td>报名时间</td>
                </tr>";
            foreach ($userinfos as $value) {
                $result.="<tr>";
                $result.="<td>" . $value['id'] . "</td>";
                $result.="<td>" . $value['name'] . "</td>";
                $result.="<td>" . DES1::decrypt($this->key, $value['iphone']) . "</td>";
				$result.="<td>" . $value['qq'] . "</td>";
                $result.="<td>" . $value["creat_date"] . "</td>";
                $result.="</tr>";
            }
            $result.="</table>";
            echo $result;
            exit;
	}
分享到:
评论

相关推荐

    PHP导出excel表格

    PHP导出Excel ,已修正保存到本地不能打开已经乱码的问题,具体内容可参照文件中demo.php有详细说明。(注:无法导出图)——

    php下载excel表

    php下载excel表,自己任意从数据库调用数组,生成数组,文件名可以自由更改,测试中文无乱码。

    PHP 导出Excel (注:导出带图片的EXCEL也支持)

    PHP导出Excel (注:导出带图片的EXCEL也支持),已修正保存到本地不能打开已经乱码的问题,具体内容可参照文件中demo.php有详细说明。

    PHP+excel通用成绩查询系统 v7.8 SAE版

    使用的是PHPexcel查询Excel,测试可用,可能速度偏慢(千条数据无影响)直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。当然LINUX可能xls文件可以倍下载,如果保密数据,请做防下载处理哦。sae...

    导出excel表格的php类.zip

    设置编码:$excel-&gt;setEncode("utf-8","gb2312"); //如果不转码,参数写一样即可,例如$excel-&gt;setEncode("utf-8","utf-8");设置标题栏$titlearr=array("a","b","c","d");设置内容栏$contentarr=array(1=&gt;array("ab...

    PHP excel通用成绩查询系统 v7.8 SAE版.zip

    直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。 当然LINUX可能xls文件可以倍下载,如果保密数据,请做防下载处理哦。 sae直接上传代码包即可和演示一样的效果,让你可以免费实现查询系统 ...

    PHP excel通用成绩查询系统 v2018.rar

    直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。 目前尚未兼容linux系统,所以大家请用windows系统的PHP环境使用。 PHP excel通用成绩查询系统软件介绍 1.非常通用。无论你Excel/Wps二维表...

    基于PHP导出Excel的小经验 完美解决乱码问题

    本篇文章是对PHP导出Excel乱码问题的解决方法就行了详细的分析介绍,需要的朋友参考下

    PHP_XLSXWriter:PHP中的轻型XLSX Excel电子表格编写器

    它旨在输出(Office 2007+)xlsx格式的Excel兼容电子表格,仅支持基本功能: 支持PHP 5.2.1+ 采用UTF-8编码的输入 多个工作表 支持货币/日期/数字单元格格式,简单的公式 支持基本的单元样式 支持编写超过10万行...

    轻量级XLSXExcel电子表格库PHP_XLSXWriter.zip

    它设计为使用(Office 2007 )xlsx 格式输出 Excel 电子表格,只支持基本功能:支持 PHP 5.2.1 采用 UTF-8 编码输入多个工作表支持货币/日期/数字单元格格式以及简单公式示例代码简单的 PHP CLI 示例:$data = ...

    PHP中的Lightwight XLSX Excel电子表格编写器-PHP开发

    它旨在输出(Office 2007+)xlsx格式的Excel兼容电子表格,仅支持基本功能:支持PHP 5.2.1+接受UTF-8编码的输入多个工作表支持货币/日期/数字单元格格式,支持简单的公式基本的单元样式支持编写大量的100K +行电子...

    PHP程序开发范例宝典III

    让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载 PHP程序开发范例宝典 内容提要 《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章...

    PHP100视频教程 47:PHP输出CSV和EXCEL两种简单的方法.rar

    软件介绍 (第47讲) PHP输出CSV和EXCEL两种简单的方法 1、定义 header()头部输出格式 header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=php100.xls"); 2、输出编码和...

    PHP+excel通用成绩查询系统

    直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。 当然LINUX可能xls文件可以倍下载,如果保密数据,请做防下载处理哦。 sae直接上传代码包即可和演示一样的效果,让你可以免费实现查询系统 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP100视频教程 47:PHP输出CSV和EXCEL两种简单的方法

    (第47讲) PHP输出CSV和EXCEL两种简单的方法1、定义 header()头部输出格式header("Content-typefilename=php100.xls");2、输出编码和支持的格式(1)支持普通格式的CSV 文本规范,以空格和换行来识别(2)支持简单...

    锐浪报表Grid++Report5.3

    提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发...

    php中通用的excel导出方法实例

    主要给大家介绍了关于php中通用的excel导出方法的相关资料,通过文中介绍的方法对大家学习或者使用php具有一定的参考学学习价值,需要的朋友们下面随着小编来一起学习学习吧。

Global site tag (gtag.js) - Google Analytics