PHPExcel を使用して Excel ファイルを読み取ると文字化けが発生する

WBOY
リリース: 2016-06-23 13:49:41
オリジナル
2014 人が閲覧しました

これはファイルを読み取るためのコードです:

		require_once dirname(__FILE__) . "/PHPExcel/Classes/PHPExcel.php";		$PHPReader = new PHPExcel_Reader_Excel2007();		if (!$PHPReader->canRead($filePath)) {			$PHPReader = new PHPExcel_Reader_Excel5();			if (!$PHPReader->canRead($filePath)) {				echo "no file";				die;			}		}		$PHPExcel = $PHPReader->load($filePath);		$sheetCount = $PHPExcel->getSheetCount();		$sheetNames = $PHPExcel->getSheetNames();		for ($SheetID = 0; $SheetID < $sheetCount; $SheetID++) {			$name = $sheetNames[$SheetID];			$currentSheet = $PHPExcel->getSheetByName($name);			$allColumn = $currentSheet->getHighestColumn();			$allRow = $currentSheet->getHighestRow();			$drive = new DriveCommand();			$data = array();			for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {				for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {					$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();					//$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = $val;					$data[$currentRow][] = $val;				}			}			if ($name == "产品信息") $name = "product";			else if ($name == "行业") $name = "industry";			else if ($name == "集团信息"){				continue;				 $name = "bloc";				var_dump($data);				die;			}			else if ($name == "客户信息")			{				var_dump($data);				die;				$name = "customer";			}			else if ($name == "业务员信息") $name = "employeer";			else continue;			$drive->actionUpload($name, $data);		}
ログイン後にコピー

これはスクリーンショットです:

読み込んだ内容の最初の部分は問題なく、後半も問題ありませんが、中間部分は次のようになります。これ。


ディスカッションに返信(解決策)

文字化けは見られません
スクリーンショットはvar_dumpの結果です

Excelファイルのデータは正常ですが、読み込むと一部middle 「 (12) { ["_name":protected]=> string(6) "宋体" ["_size":protected]=> int(12) ["_bold":protected]=> のような出力bool (false) ["_italic":protected]=> bool(false) ["_superScript":protected]=> bool(false) ["_subScript":protected]=> : protected]=> string(4) "none" ["_strikethrough":protected]=> bool(false) ["_color":protected]=> object(PHPExcel_Style_Color)#3006 (4) { " :protected]=> string(8) "FF000000" ["_parentPropertyName":protected]=> NULL ["_isSupervisor":protected]=> bool(false) ["_parent":protected]=> NULL } "そのようなデータ。通常のデータ出力は [2]=> array(13) { [0]=> string(6) "Supermarket" [2]=> 12) 「白家スーパーマーケット」 [3]=> 文字列(6) 「広東」 [4]=> 文字列(6) 「広州」 [5]=> 文字列(21) 「広州チャイナプラザ店」 ]=> string(51) "広州越秀区中山三路228号チャイナプラザ3階" [7]=> NULL [9]=> 10]=> NULL [11]=> 文字列(6) [3]=> 文字列(6) ) "B01002" [1]=> string(6) "スーパーマーケット" [2]=> string(12) "Baijia Supermarket" この形式。

私も文字化けに遭遇することがありますが、それはおそらく Microsoft Excel の問題です。

文字化けはありません
スクリーンショットは var_dump の結果です


Excel ファイル内のデータは正常ですが、読み込むと、途中に「(12) { [" _name」のような部分が表示されます":protected]=> string(6) "宋体" ["_size":protected]=> int(12) ["_bold":protected]=> bool(false) ["_italic":protected] = > bool(false) ["_superScript":protected]=> bool(false) ["_subScript":protected]=> string(4) " " ["_strikethrough":protected]=> bool(false) ["_color":protected]=> object(PHPExcel_Style_Color)#3006 (4) { ["_argb":protected]=> string(8) " FF000000" ["_parentPropertyName":protected]=> NULL ["_isSupervisor":protected]=> bool(false) ["_parent":protected]=> NULL }"。通常のデータ出力は [2]=> array(13) { [0]=> string(6) "Supermarket" [2]=> 12) 「白家スーパーマーケット」 [3]=> 文字列(6) 「広東」 [4]=> 文字列(6) 「広州」 [5]=> 文字列(21) 「広州チャイナプラザ店」 ]=> string(51) "広州越秀区中山三路228号チャイナプラザ3階" [7]=> NULL [9]=> 10]=> NULL [11]=> 文字列(6) [3]=> 文字列(6) ) "B01002" [1]=> string(6) "スーパーマーケット" [2]=> string(12) "Baijia Supermarket" この形式。

私も時々文字化けに遭遇しますが、それはおそらく Microsoft Excel の問題です。


はい、読み上げ内容の最初の部分は通常通り、後半も通常通りですが、途中に写真のように読み上げられる部分があります。

問題は解決されました。単一のセルの内容を読み取る場合、読み取り結果がオブジェクト型である場合と文字列型である場合があるため、判定を追加して型を変更するだけです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート