8

PHPExcelクラスを使用してphpコードのExcelファイルを読み取っているときに、PHPExcelクラスで問題が発生しました。

// Reading the excel data
$objReader = new PHPExcel_Reader_Excel2007();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load('test.xlsx');
$objPHPExcel->setActiveSheetIndex(0);
$dataArray = $objPHPExcel->getActiveSheet()->toArray();

私はこのコードを使用していますが、問題は、Excelファイルを作成し、日付のようなセル値を挿入すると、2012年1月9日と言うことです。

PHPExcelクラスのtoarray()関数を使用して完全なエクセルシートを読み取ると、日付値は返されません。数値を返します。

MS OFficeアプリケーションを使用してExcelファイルを作成し、任意のセルに日付を挿入すると、Excelがセルを日付形式に変換することがわかりました。そこで、PHPExcelクラスを使用して日付形式のセルを読み取りたいと思います。

4

1 に答える 1

10

ルール 1:

$objReader->setReadDataOnly(true); を設定するのは得策ではありません。日付を扱うとき。そうすると、PHPExcel は、セルに日付または数値が含まれているかどうかを判断できなくなります。

ルール 2:

その数値は、Excel によって保存されている Excel の日付値です。次に、Excel の numberFormat Mask を使用して、表示時にその数値をフォーマットされた「人間が判読できる」日付に変換します。($objReader->setReadDataOnly(true); を使用した場合は、セルの numberFormat マスクをロードしていません。numberFormat マスクをロードした場合は、getFormattedValue() メソッドを使用して、フォーマットされた "human - 文字列としての日付。

ルール 3:

Excel の数値の日付値を UNIX の日付/時刻スタンプまたは PHP の DateTime オブジェクトに変換するには、組み込みの PHPExcel_Shared_Date::ExcelToPHP() または PHPExcel_Shared_Date::ExcelToPHPObject() メソッドを使用できます。

ルール 4:

これらはすべて完全に文書化されています。しかし、ファイル名に大きな赤い文字で DATES という単語を付けて、日付専用の特別なマニュアルを作成する必要があると思います。

于 2012-09-12T20:02:44.307 に答える