ホームページ >バックエンド開発 >PHPチュートリアル >phpexcelを使ってExcelの文字化けをエクスポートする
データベースとページは両方とも utf8 です。
header('Content-Type: application/vnd.ms-excel;');
header('Content-Disposition:attachment;filename='.$filename.'.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
エクスポート後、execel を開きます。文字化けしています。
ローカルウィンドウでエクスポートする場合は問題ないのですが、サーバーにアップロードしてエクスポートすると文字化けします。
var_dump($objWreter)をページに直接実行して文字化けがないことを確認します。
header('Content-Type: application/vnd.ms-excel;charset=gb2312') はまだ文字化けしています;
この文字化けしたコードの問題は何ですか?
ディスカッションに返信 (解決策)
header('Content-Type: application/vnd .ms-excel');
. ....
..
$objWriter->save('php://output'); 出力は図のようにバイナリ ドキュメント ストリームです。文字セットに問題はありません
これにはおそらくphpエラーメッセージが含まれています
スクリーンショットを撮って投稿して確認することもできます。ネットワークディスク上のxlsファイル
ob_end_clean();//文字化けを避けるためにバッファをクリアします
header('Content-Type: application/vnd.ms-excel ');
.....
.....
ob_end_clean();//文字化けを避けるためにバッファをクリアします
header('Content-Type: application/vnd.ms -excel');
.....
.....
A1 セルの内容が間違っています
冗長な出力がないか確認してください
上位コードと下位コード
/*--------------ヘッダー情報の設定------*/
$objPHPExcel-> ; setActiveSheetIndex(0)
「c」)
-> setCellValue('D1', 'd')
--- -----------開始データベースから情報を抽出し、Excel テーブルに挿入します-----------------*/
$i=2 // i 変数を定義します。目的は次のとおりです。ループ出力データの行数を制御します
for($j=0;$j
$objPHPExcel->setActiveSheetIndex(0)
- ->setCellValue("A".$i , $ result [$ j] [ori_stu_candidatenum '])、$ j] [' ori_stu_sex ']、$ result ----------以下はその他の情報の設定です---------------*/
$objPHPExcel->getActiveSheet()->setTitle; ('Student Sheet'); // シートの名前を設定します
$objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition:attachment;filename='.$filename.'.xls');
header(' Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); // ここで生成 Excel がポップアップ表示されます
A1 セルの内容が間違っているかどうかを確認してください冗長な出力
コーディングさせてください
Vendor("Excel.PHPExcel"); Vendor("Excel.PHPExcel.IOFactory"); $objPHPExcel = new PHPExcel(); $db=M("student_info"); $where="where fsi_logistics.ori_log_stuCandidateNum = fsi_student_info.ori_stu_candidateNum"; $sql="select logistics.*,student_info.ori_stu_name from student_info,logistics ".$where; $result= $db->query($sql); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '姓名') ->setCellValue('B1', '考生号') ->setCellValue('C1', '商品') ->setCellValue('D1', '价格'); $i=2; for($j=0;$j<count($result);$j++){ $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A".$i, $result[$j]['ori_stu_name']) ->setCellValue("B".$i, $result[$j]['ori_log_stuCandidateNum']) ->setCellValue("C".$i, $result[$j]['product']) ->setCellValue("D".$i, $result[$j]['price']); $i++; } $objPHPExcel->getActiveSheet()->setTitle('学生表'); $objPHPExcel->setActiveSheetIndex(0); $filename = date('Y-m',time())."生活用品表"; ob_end_clean() ; header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename='.$filename.'.xls'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
bom の問題が解決しました、ありがとう