ホームページ  >  記事  >  バックエンド開発  >  PHPベースでExcelやCSVにエクスポートする詳細解説(utf8、gbkエンコード変換あり)_PHPチュートリアル

PHPベースでExcelやCSVにエクスポートする詳細解説(utf8、gbkエンコード変換あり)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:32987ブラウズ

php が文字化けして Excel にインポートされる理由は、utf8 エンコードが ;?php
header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); 内のすべての utf8 エンコードをサポートしていないためです。 header("プラグマ: public");
header("有効期限: 0");
header( "キャッシュ制御: 再検証が必要、事前チェック = 0"); Content-Type: application/force-download");
header("Content-Type: application/octet -stream");

header("Content-Type: application/download"); header("Content-Type: application/octet -stream") Disposition:attachment;filename=11.xls ");header("Content-Transfer-Encoding:binary ") ; ?>
Php コード



コードをコピー

コードは次のとおりです:


echo $filename;
?>
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/download"); ("Content-Disposition:attachment;filename=11.xls "); header("Content-Transfer-Encoding:binary ")
Php コード



コードは次のとおりです次のように:

0.0.?>
ウェブサイトにアクセスしたときにそれを Excel にダウンロードしてください
セルを区別したい場合は、表を使用して Web ページを作成してください
============== ========== その他の方法 ======================== ======1. 簡単な Excel を作成します

コードをコピーします

コードは次のとおりです:


0.0.header("Content-type:application/ vnd.ms-excel");
0.header("Content-Disposition:filename =php2excel.xls");
0.
0.echo "A1/t B1/t C1/n";
0.echo " A2/t B2/t C2/n";
0.echo "A3/t B3/t C3/n";
0.echo "A4/t B4/t C4/n";
0.?>
2. 簡単なCSVを作成します

コードをコピーします

コードは次のとおりです:

$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"); 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 "
gt;"; コードをコピーします
コードは次のとおりです:

function exportToCsv($csv_data, $filename = 'export.csv') {
$csv_terminated = "/n";
$csv_separator = ",";
$csv_enclosed = '"';
$csv_escaped = "// ";
// データベースからデータを取得します
$schema_insert = '';
$out = '';
// データをフォーマットします
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($cs v_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;
} // 終了 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('名前', 'アドレス'));
array_push($csv_data, array($row['名前'],$row['アドレス']));
...
exportToCsv($csv_data,'new_file.csv');
*/

封闭関数二:
复制代码代码如下:

/**
* CSVデータをクライアントに適切に出力するためのシンプルなクラス。 PHP 5 には、ファイルへの書き込み (fputcsv()) で同じことを行う組み込みメソッド
* がありますが、多くの場合、クライアントに直接アクセスする方が有益です。
*
* @author Jon Gales
 */
class CSV_Writer {
public $data = array();
public $deliminator;
/**
* データと、オプションで区切り文字をロードします。データは連想配列の配列
* であると想定されます。
*
* @param array $data
* @param string $deliminator
    */
function __construct($data, $deliminator = ",")
{
if (!is_array($data))
{
throw new Exception('CSV_Writer はデータを配列としてのみ受け入れます');
}
$this->data = $data;
$this ->デリミネーター = $デリミネーター;
}
プライベート関数wrap_with_quotes($data)
{
$data = preg_replace('/"(.+)"/', '""$1""', $data);
return sprintf('"%s"', $data);
}
/**
* 選択した区切り文字でエスケープされた CSV ファイルをエコーし​​ます
*
* @return void
    */
public function Output()
{
{
foreach ($this->data as $row)
{
$ quote_data = array_map(array('CSV_Writer', 'wrap_with_quotes'), $row);
echo sprintf("%s/n", implode($this->deliminator, $quoted_data));
}
}
/ **
* CSV 出力に適切な Content-Type ヘッダーと添付ファイルを設定します
*
* @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类を使用します
复制代码代码如下:

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,'Laoliang','**Studio','jb51.net','1363137966*',time(),'y');
$total_row = count($data);
$total_col = count( $data [0]);
for ($row = 0; $row for ($col = 0; $col $worksheet ->writeString($row, $col, $data[$row][$col]); // シート 1 にデータを書き込みます
}
}
/*
$worksheet =& $workbook- >addWorksheet( "Sheet-2");
$data[]= array('id','username','company','email','mob','daytime','intent');
$ data[] = array(1,'Laoliang','**Studio','jb51.net','1363137966*',time(),'y');
$total_row = count($data);
$total_col = count( $data[0]);
for ($row = 0; $row for ($col = 0; $col $worksheet->writeString($row, $col, $data[$row][$col]); // シート 2 にデータを書き込みます
}
}
*/
$ workbook->close(); // ダウンロード完了
?>

カテゴリ 2
-----関数説明
Excel ファイルの読み込み
function Read_Excel_File($ExcelFile,$Result)
$ExcelFile Excel ファイル名
$Result 返される結果
関数戻り値 通常は0を返し、それ以外の場合はエラーメッセージを返します
戻り値の配列
$result [シート名] [行] [列] の値は、対応する Excel セルの値

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 {
for ($j=0;$j {
echo $return[Sheet1][$i][$j]."|"
Read_Excel_File("Book1.xls",$return);
Create_Excel_File("ddd.xls",$return[Sheet1]);
?>



http://www.bkjia.com/PHPjc/327836.htmlwww.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/327836.html

技術記事

Excel にインポートすると PHP が文字化けする理由は、utf8 エンコードがすべての utf8 エンコードをサポートしていないためです。