`

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表格,并解决可能出现的乱码和保存问题。 首先,我们需要了解PHP如何生成Excel文件。最常用的方法是使用PHP的内置函数或第三方库。一个常见的库是PHPExcel,它可以创建、读取...

    php下载excel表

    在PHP中下载Excel表格是一项常见的任务,特别是在web应用程序中,我们可能需要提供用户下载数据的选项,例如报表或导出数据库记录。这个场景下,PHP可以通过处理数组数据并将其转换为Excel格式来实现这一功能。以下...

    PHPCMS-formguide_export_utf-8-导出EXCEL表格功能

    在PHPCMS中,使用UTF-8编码可以确保在导出数据到Excel时,无论数据中包含何种语言,都能正确显示,避免了乱码问题。这在处理包含中文、日文、韩文等非英文字符的数据时尤其重要。 导出到Excel的功能通常基于PHP的...

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

    本教程将专注于使用PHP生成带有图片的Excel文件,并解决文件保存后可能出现的乱码问题。我们将探讨如何利用PHP的第三方库来实现这一功能,以及处理过程中需要注意的关键点。 首先,PHP自身并不直接支持创建Excel...

    php 导出excel表数据

    下面我们将深入探讨如何使用PHPExcel库导出包含中文数据的Excel表格,并解决UTF-8编码的问题。 首先,要使用PHPExcel库,你需要先将其下载并引入到你的项目中。PHPExcel库通常包含多个类文件,这些文件提供了操作...

    PHP提取excel数据 导入MYSQL

    此库提供了读取和解析Excel表格数据的能力,使得开发者可以方便地在PHP中处理Excel数据。 ### 二、读取和解析Excel数据 #### 使用Spreadsheet_Excel_Reader类 在代码示例中,`Spreadsheet_Excel_Reader`类被实例...

    php导入表格到数据库

    当我们需要处理数据,比如从Excel表格中导入数据到数据库时,PHP提供了多种方法来实现这一功能。本篇文章将深入探讨如何使用PHP进行Excel表格数据的导入,并与数据库进行交互。 首先,我们要明白“导入Excel”通常...

    ci框架利用phpexcel导入excel表表格

    在本文中,我们将深入探讨如何在CodeIgniter(CI)框架中使用PHPExcel库来导入Excel表格数据到数据库。CI框架是一款流行的PHP MVC(模型-视图-控制器)框架,而PHPExcel则是一个用于读取和写入Excel文件的强大的PHP...

    EXCEL数据导入数据库_PHP&UTF8;版

    这些文件通常以.php为扩展名,它们包含了实现数据导入功能的具体逻辑,包括读取Excel文件、解析数据、处理UTF8编码以及与不同数据库系统的交互等操作。开发者可能需要了解PHP编程,以便对代码进行自定义或调试。 在...

    在页面中导入excel文件并以表格显示

    综上所述,实现“在页面中导入Excel文件并以表格显示”的功能,涉及到前端的文件上传、数据解析、表格渲染,以及可能的后端处理和跨浏览器兼容性优化。使用合适的工具库和遵循最佳实践,可以高效地完成这一任务。

    基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)

    1. PHP导出数据到Excel和CSV格式的实现方法: - 在PHP中,通过设置HTTP响应头,可以控制数据输出的格式,如导出到Excel或CSV文件。设置`Content-Type`为`application/vnd.ms-excel`可以实现导出为Excel文件,而`...

    php excel类(解决中文乱码问题,支持多工作薄) 数据分卷技术 附带Demo

    在IT行业中,处理数据时,Excel表格经常被用作数据交换和存储的工具。当我们需要在PHP中操作Excel文件,特别是在处理中文字符时,可能会遇到中文乱码的问题。此外,当数据量较大时,一次性读取和写入整个工作簿可能...

    php导出到Excel 或 CSV (附utf8、gbk 编码转换)

    在PHP开发中,有时我们需要将数据导出为用户可下载的Excel或CSV文件,以便进行数据分析或存储。本文将详细讲解如何使用PHP实现这个功能,同时处理常见的编码问题,如UTF-8和GBK的转换。 首先,让我们了解Excel和CSV...

    PHP将Excel导入数据库及数据库数据导出至Excel的方法

    在PHP开发中,有时我们需要处理Excel文件,例如从Excel文件导入数据到数据库,或者将数据库中的数据导出到Excel文件。下面将详细讲解这两种操作的实现方法。 **一、将Excel导入数据库** 导入Excel到数据库的过程...

    php 操作 Excel的函数库

    在开发过程中,需要注意文件编码问题,避免数据丢失或乱码。同时,对于大文件,还需要考虑性能优化,比如分块读写,避免一次性加载整个文件导致内存占用过高。 总结一下,"php 操作 Excel的函数库"涉及到的主要知识...

    jquery 导出excel方法

    jQuery可以利用Data URI Scheme将表格数据编码为Base64字符串,然后在新的浏览器窗口中打开,这会被浏览器识别为Excel文件。这种方法简单但不适用于大量数据,因为URL长度有限制。 3. **服务器端处理** 在许多...

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

    但是,如果数据包含中文字符,那么在导出时可能会遇到编码问题,导致生成的Excel文件中出现乱码,影响数据的阅读和使用。为了解决这一问题,本文将详细介绍几种常见的解决PHP导出Excel乱码问题的方法。 首先,要...

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

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

    php 自定义函数实现将数据 以excel 表格形式导出示例

    本文主要介绍了如何使用PHP自定义函数将数据以Excel表格的形式导出,并结合实例详细分析了PHP操作二维数组的遍历与Excel格式输出的相关实现技巧。在编写函数时,首先要确保能够设置正确的内容类型响应头(Content-...

Global site tag (gtag.js) - Google Analytics