phpはexcelテーブルと符号化の問題にデータをダウンロードします
4979 ワード
ネットワークから転送
PHPがExcelファイルをエクスポートする際の主な手順は2つあります.
1、定義ファイル名
2、Excelデータの入力
この2つの過程でいくつかのPHPがExcelの文字化けしをエクスポートする問題が発生する可能性があります.次に、解決方法を説明します.
ファイル名のPHPエクスポートExcel文字化けしを解決する:
文字化けしの原因:お客様が使用する中国語版Windowsシステムプラットフォームであり、Windowsプラットフォームのファイル名はgb 2312(gbk)と符号化されているが、私たちのウェブコードは現存する潮流に従うためにutf-8(国際化)符号化が一般的である.この場合、私たち:header(「Content-Disposition:inline;filename=".$filename.」.xls")では文字化けしてしまいますが、もしあなたのページの符号化がgb 2312であれば、符号化の問題を考慮する必要はありません.
解決策:$filenameをトランスコードし、実行:iconv('utf-8","gb 2312",$filename)を実行します.iconv関数をサポートしていない場合は、$filenameの符号化をgbkに変換できればいいです.
しかし、このような問題がまた発生し、linuxユーザーはファイル名の文字化けしてしまいます(linuxプラットフォームのファイル名はgbk符号化ではないため).
この問題を考慮して、私は2つの方法を採用します:第1:一部の取引先を放棄して、結局windowsシステムのユーザーは大部分を占めています.第二:gmailのように、2つのダウンロードアドレスを提供します.1つのファイル名gbk符号化、1つのファイル名utf-8符号化.
Excel内データのPHPエクスポートExcel文字化けしを解決する:
PHPがExcelをエクスポートして文字化けした原因:ページコードとExcelコードが一致しない.
解決策:コードが一致しない以上、一致させておけばOKです.Excelの文字セットを定義する:header(「Content-Type:application/vnd.ms-excel;charset=UTF-8」)を見て、charset=UTF-8を見て、あなたのホームページの符号化と一致させてExcel内のデータの文字化の問題を解決することができて、これは比較的に簡単です!
簡単なテストで使用可能
1つ目の方法:
2つ目の方法:
PHPがExcelファイルをエクスポートする際の主な手順は2つあります.
1、定義ファイル名
2、Excelデータの入力
この2つの過程でいくつかのPHPがExcelの文字化けしをエクスポートする問題が発生する可能性があります.次に、解決方法を説明します.
ファイル名のPHPエクスポートExcel文字化けしを解決する:
文字化けしの原因:お客様が使用する中国語版Windowsシステムプラットフォームであり、Windowsプラットフォームのファイル名はgb 2312(gbk)と符号化されているが、私たちのウェブコードは現存する潮流に従うためにutf-8(国際化)符号化が一般的である.この場合、私たち:header(「Content-Disposition:inline;filename=".$filename.」.xls")では文字化けしてしまいますが、もしあなたのページの符号化がgb 2312であれば、符号化の問題を考慮する必要はありません.
解決策:$filenameをトランスコードし、実行:iconv('utf-8","gb 2312",$filename)を実行します.iconv関数をサポートしていない場合は、$filenameの符号化をgbkに変換できればいいです.
しかし、このような問題がまた発生し、linuxユーザーはファイル名の文字化けしてしまいます(linuxプラットフォームのファイル名はgbk符号化ではないため).
この問題を考慮して、私は2つの方法を採用します:第1:一部の取引先を放棄して、結局windowsシステムのユーザーは大部分を占めています.第二:gmailのように、2つのダウンロードアドレスを提供します.1つのファイル名gbk符号化、1つのファイル名utf-8符号化.
Excel内データのPHPエクスポートExcel文字化けしを解決する:
PHPがExcelをエクスポートして文字化けした原因:ページコードとExcelコードが一致しない.
解決策:コードが一致しない以上、一致させておけばOKです.Excelの文字セットを定義する:header(「Content-Type:application/vnd.ms-excel;charset=UTF-8」)を見て、charset=UTF-8を見て、あなたのホームページの符号化と一致させてExcel内のデータの文字化の問題を解決することができて、これは比較的に簡単です!
簡単なテストで使用可能
1つ目の方法:
<?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
");
$sep = "\t";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t"; //
}
print("
");
$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 "
";
$i++;
}
return (true);
?>
2つ目の方法:
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;
}