`
天梯梦
  • 浏览: 13730992 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

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

阅读更多

链接:CSV 导入mysql 数据库

 

php导入到excel-支持utf8和gbk两种编码

 

php导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了

utf-8编码案例

 

 

<?php 
header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); 
header("Content-Disposition: attachment;filename=11.xls "); 
header("Content-Transfer-Encoding: binary "); 
?>  
 
<? 
$filename="php导入到excel-utf-8编码"; 
$filename=iconv("utf-8", "gb2312", $filename); 
echo $filename; 
?> 
 

gbk编码案例

 

 

<?php 
header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); 
header("Content-Disposition: attachment;filename=11.xls "); 
header("Content-Transfer-Encoding: binary "); 
?>  
 
<? 
$filename="php导入到excel-utf-8编码"; 
echo $filename; 
?> 
 

访问网站的时候就下载到excel里面

要弄单元格区别的话

用table表格做网页的就可以了


例如:

 

 

<?php 
header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); 
header("Content-Disposition: attachment;filename=11.xls "); 
header("Content-Transfer-Encoding: binary "); 

$filename="<table>
			<tr>
				<th>left_1</th>
				<td>right_1</td>
			</tr> 
			<tr>
				<th>left_2</th>
				<td>right_2</td>
			</tr>
		</table>"; 

echo $filename; 
?> 

 

====================== 其他方法 =============================

 

 

1、制作简单 Excel

 

 

<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=php2excel.xls");

echo "A1\t B1\t C1\n";
echo "A2\t B2\t C2\n";
echo "A3\t B3\t C3\n";
echo "A4\t B4\t C4\n";
?>
 

2、制作简单 CSV 

 

 

<?php
$action =$_GET['action'];
if ($action=='make'){
	$fp = fopen("demo_csv.csv","a"); //打开csv文件,如果不存在则创建
	$title = array("First_Name","Last_Name","Contact_Email","Telephone"); //第一行数据

	$data_1 = array("42343","423432","4234","4234"); 
	$data_2 = array("4234","Last_Name","Contact_Email","Telephone"); 

	$title = implode(",",$title); //用 ' 分割成字符串
	$data_1 = implode(",",$data_1); // 用 ' 分割成字符串
	$data_2 = implode(",",$data_2); // 用 ' 分割成字符串

	$data_str =$title."\r\n".$data_1."\r\n".$data_2."\r\n"; //加入换行符
	fwrite($fp,$data_str); // 写入数据
	fclose($fp); //关闭文件句柄
	echo "生成成功";
}
echo "<br>";
echo "<a href='?action=make'>生成csv文件</a>";
?>

 

也可以做一个封闭函数:

 

封闭函数一:

 

function exportToCsv($csv_data, $filename = 'export.csv') {
    $csv_terminated = "\n";
    $csv_separator = ",";
    $csv_enclosed = '"';
    $csv_escaped = "\\";

    // Gets the data from the database
    $schema_insert = '';

    $out = '';

    // Format the data
    foreach ($csv_data as $row)
    {
        $schema_insert = '';
        $fields_cnt = count($row);
        //printr($row);
        $tmp_str = '';
        foreach($row as $v)
        {
            $tmp_str .= $csv_enclosed.str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $v).$csv_enclosed.$csv_separator;
        } // end for
        
        $tmp_str = substr($tmp_str, 0, -1);
        $schema_insert .= $tmp_str;

        $out .= $schema_insert;
        $out .= $csv_terminated;
    } // end while

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Length: " . strlen($out));
    header("Content-type: text/x-csv");
    header("Content-Disposition:filename=$filename");

    echo $out;
}

/*
$csv_data = array(array('Name', 'Address'));
array_push($csv_data, array($row['name'],$row['address']));
...

exportToCsv($csv_data,'new_file.csv');
*/
 

 

封闭函数二:

 

<?
/**
 * Simple class to properly output CSV data to clients. PHP 5 has a built
 * in method to do the same for writing to files (fputcsv()), but many times
 * going right to the client is beneficial.
 *
 * @author Jon Gales
 */

class CSV_Writer {

    public $data = array();
    public $deliminator;

    /**
     * Loads data and optionally a deliminator. Data is assumed to be an array
     * of associative arrays.
     *
     * @param array $data
     * @param string $deliminator
     */
    function __construct($data, $deliminator = ",")
    {
        if (!is_array($data))
        {
            throw new Exception('CSV_Writer only accepts data as arrays');
        }

        $this->data = $data;
        $this->deliminator = $deliminator;
    }

    private function wrap_with_quotes($data)
    {
        $data = preg_replace('/"(.+)"/', '""$1""', $data);
        return sprintf('"%s"', $data);
    }

    /**
     * Echos the escaped CSV file with chosen delimeter
     *
     * @return void
     */
    public function output()
    {
        foreach ($this->data as $row)
        {
            $quoted_data = array_map(array('CSV_Writer', 'wrap_with_quotes'), $row);
            echo sprintf("%s\n", implode($this->deliminator, $quoted_data));
        }
    }

    /**
     * Sets proper Content-Type header and attachment for the CSV outpu
     *
     * @param string $name
     * @return void
     */
    public function headers($name)
    {
        header('Content-Type: application/csv');
        header("Content-disposition: attachment; filename={$name}.csv");
    }
}

/*
//$data = array(array("one","two","three"), array(4,5,6));

$data[] = array("one","two","three");
$data[] = array(4,5,6);

$csv = new CSV_Writer($data);
$csv->headers('test');
$csv->output();
*/
 

 

 

3. 使用excel类

 

<?php
require_once 'Spreadsheet/Writer.php';

$workbook = new Spreadsheet_Excel_Writer();

/* 生成 CSV
$filename = date('YmdHis').'.csv';
$workbook->send($filename); // 发送 Excel 文件名供下载
*/

// 生成 Excel
$filename = date('YmdHis').'.xls';
$workbook->send($filename); // 发送 Excel 文件名供下载


$workbook->setVersion(8);
$workbook->setBIFF8InputEncoding('UTF-8');

$worksheet =& $workbook->addWorksheet("Sheet-1");

$data[]= array('id','username','company','email','mob','daytime','intent');
$data[] = array(1,'老梁','**工作室','myemail@gmail.com','1363137966*',time(),'y');


$total_row = count($data);
$total_col = count($data[0]);
for ($row = 0; $row < $total_row; $row ++) {
   for ($col = 0; $col < $total_col; $col ++) {
		$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-1 中写入数据
   }
}

/*
$worksheet =& $workbook->addWorksheet("Sheet-2");

$data[]= array('id','username','company','email','mob','daytime','intent');
$data[] = array(1,'老梁','**工作室','myemail@gmail.com','1363137966*',time(),'y');


$total_row = count($data);
$total_col = count($data[0]);
for ($row = 0; $row < $total_row; $row ++) {
   for ($col = 0; $col < $total_col; $col ++) {
		$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-2 中写入数据
   }
}

*/

$workbook->close(); // 完成下载

?>
 

 

类二

 

-----函数说明
读取Excel文件
function Read_Excel_File($ExcelFile,$Result)

$ExcelFile    Excel文件名
$Result        返回的结果
函数返回值    正常返回0,否则返回错误信息

返回的值数组
    $result[sheet名][行][列] 的值为相应Excel Cell的值
   
建立Excel文件   
function Create_Excel_File($ExcelFile,$Data)

$ExcelFile    Excel文件名
$Data        Excel表格数据
请把函数写在PHP脚本的开头

例1:

 

<?
require "excel_class.php";

Read_Excel_File("Book1.xls",$return);

for ($i=0;$i<count($return[Sheet1]);$i++)
{
    for ($j=0;$j<count($return[Sheet1][$i]);$j++)
    {
        echo $return[Sheet1][$i][$j]."|";
    }
    echo "<br>";
}
?>
 

例2:

 

<?
require "excel_class.php";

Read_Excel_File("Book1.xls",$return);
Create_Excel_File("ddd.xls",$return[Sheet1]);
?>
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

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

    在PHP开发中,有时我们需要将数据导出为...处理中文字符时,注意编码的转换,尤其是从UTF-8到GBK或反之亦然,以确保数据在不同系统间兼容。在实际项目中,确保对输入数据进行适当的编码检测和转换,以避免乱码问题。

    php导出csv文件无乱码示例

    在本示例中,我们首先使用`array_map()`遍历每一行数据,然后对每一行的每个元素调用`iconv()`函数,将GBK编码转换为UTF-8。 总结,导出CSV文件无乱码的关键在于: 1. 确保文件头设置了正确的字符编码,例如`...

    Vtiger-5.2.1-导出数据文件Excel及CSV中文乱码问题完美修正包

    在处理中文数据时,用户可能会遇到一个常见问题:当他们尝试导出数据到Excel或CSV格式时,中文字符显示为乱码。这个问题通常是由于字符编码不兼容或者配置不当引起的。 首先,我们要理解乱码的根源。在计算机系统中...

    java 解析csv文件例子,csv文件 中文乱码问题

    4. **转换编码**:如果无法确定或修改原始编码,可以先将文件转换为已知的编码,如UTF-8,再进行读取。 对于解析CSV文件,Java社区提供了许多第三方库,如OpenCSV、SuperCSV和Apache Commons CSV等,它们提供了更...

    csv导出工具2

    5. 支持CSV编码设置:如UTF-8、GBK等,确保跨平台和跨语言环境的兼容性。 在实际应用中,掌握CSV文件的处理技巧对于数据处理和分析工作至关重要。了解如何使用CSV导出工具2能够提高工作效率,尤其是在需要处理大量...

    易语言文件编码转换

    例如,一个程序可能需要读取GBK编码的日志文件,然后将其转换为UTF-8格式以便在网络上分享或存储在只支持UTF-8的数据库中。 综上所述,易语言文件编码转换源码是一个实用的工具,它涵盖了文件操作和编码转换的核心...

    csv转Excel, 后缀xlsx,xls

    - 文本编码:CSV文件可能使用不同的字符编码,如UTF-8或GBK,确保在转换时正确处理,避免乱码问题。 - 数值和日期:Excel可能会自动将数字和日期格式化,根据需要调整单元格格式。 - 大小限制:.xls格式对单个文件...

    PHP导出excel表格

    echo iconv("UTF-8", "GBK//IGNORE", $content); ``` 这里使用了iconv函数进行字符编码转换。 8. **注意无法导出图像**: 描述中提到,PHPSpreadsheet不支持直接导出图像到Excel文件。如果需要在Excel中包含...

    CDataFile_demo.zip_C csv 数据_C++读取csv数据_C++读取csv文件_csv read_csv

    - 编码兼容性:考虑到不同系统的编码差异,如UTF-8和GBK。 - 处理特殊字符:例如,CSV中可能包含逗号、引号等特殊字符,需要正确处理以避免数据混乱。 - 性能优化:对于大型CSV文件,可能需要采用缓冲读取或其他优化...

    导入EXCEL/scv和TXT。

    例如,UTF-8是最常见的编码,但某些文件可能使用GBK或其他编码。在读取文件时,需要指定正确的编码,以避免乱码。 此外,数据预处理也是关键步骤,包括处理缺失值、异常值,以及数据类型转换等。例如,Excel可能将...

    java 读取写入csv

    ### Java读取与写入CSV文件的详细解析 在日常的软件开发中,处理CSV(Comma Separated ...最后,值得注意的是,虽然给出的代码示例使用了GBK编码,但在国际化的项目中,更推荐使用UTF-8编码,以确保兼容性和可移植性。

    php 导出excel

    在处理中文乱码时,可以考虑将字符串从UTF-8编码转换为GBK,例如使用`mb_convert_encoding`函数。 总之,选择哪种方法取决于项目需求,如数据的复杂性、文件大小、格式要求以及服务器环境。对于小型项目或简单数据...

    csv(excel)文件操作实例

    默认情况下,CSV文件使用UTF-8编码,但某些情况下可能是其他编码,如GBK。如果不正确地处理编码,可能会导致乱码问题。同时,Excel在保存CSV文件时,有时会自动转换特殊字符,这可能会影响数据的原始状态。 最后,...

    使用C#读取csv文件的实例源码

    3. **编码问题**:CSV文件可能使用不同的字符编码,如UTF-8、GBK等。在读取文件时,确保指定正确的编码,否则可能会出现乱码。 4. **错误处理**:上述示例代码包含异常处理,捕获可能出现的`FileNotFoundException`...

    Laravel开发-laravel-csv

    在处理CSV文件时,可能遇到不同编码格式的数据,例如GBK、UTF-8等。`League\Csv`库允许我们指定编码,以确保数据正确读取和写入。在上面的代码中,我们已经设置了`setEncoding`方法来指定编码。 6. 数据验证与转换...

    原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    本篇将介绍如何使用原生PHP实现导出CSV格式的Excel文件,包括必要的源码分析。 首先,创建一个名为`Export.php`的文件,定义一个名为`Export`的类,该类包含一个方法`exportToCsv()`,用于处理CSV文件的生成。以下...

    csv_example.rar

    - CSV文件编码通常是UTF-8,但也可能是其他编码,如GBK。在读取时需注意文件的实际编码,避免出现乱码问题。 - 如果CSV文件包含标题行,可以使用`csv.DictReader()`,它会将每一行转换为字典,键是标题,值是对应的...

    CSV文件处理PHP类

    7. **编码支持**:类可能会处理字符编码问题,确保数据在不同编码环境下能正确读写,如UTF-8、GBK等。 8. **头行处理**:在读取CSV时,类可能有选项决定是否保留或忽略第一行(通常为列名),并提供获取或设置列名...

Global site tag (gtag.js) - Google Analytics