ホームページ > バックエンド開発 > PHPチュートリアル > Drupal が Excel を読み取り、mysql データベースにインポートするプログラム コード_PHP チュートリアル

Drupal が Excel を読み取り、mysql データベースにインポートするプログラム コード_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:06:22
オリジナル
851 人が閲覧しました

この記事では、Drupal で Excel を読み込み、mysql データベースにインポートする方法を紹介します。 ここでは、Excel プラグインの使用方法を紹介します。 PHPExcel は、Office Excel ドキュメントを操作するために使用される PHP クラス ライブラリです。 Microsoft の OpenXML 標準および PHP 言語。これを使用すると、Excel (BIFF) .xls、Excel 2007 (OfficeOpenXML) .xlsx、CSV、Libre/OpenOffice Calc .ods、Gnumeric、PDF、HTML などのさまざまな形式のスプレッドシートの読み取りと書き込みができます。

Drupal Passライブラリ呼び出し PHPExcl
PHPExcel をダウンロードしたら、Drupal ディレクトリにアップロードします: sites/all/libraries/PHPExcel

ライブラリモジュールがプロジェクトにインストールされている場合は、libraries_load($name); を通じて呼び出すことができます。

ライブラリ モジュールがインストールされていない場合は、次のコードを使用してそれを呼び出すことができます:

コードは次のとおりです コードをコピー

require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php");

Excel を完全にインポートするには、プログラムが完了するまでに長い時間がかかる場合があることに注意してください。

コードの先頭に次のように追加します:

コードは次のとおりです コードをコピー

set_time_limit(0);

無制限の実行時間を確保するため。

Drupal は Excel を読み取り、データベースにインポートします
Excel ファイルをアップロードした後、Drupal は Excel コンテンツを読み取り、データベースに書き込み、インポート結果メッセージを出力します。

まとめると、いくつかのポイントがあります:

DrupalはExcelの複数行、複数列のコンテンツを読み込みます。列数は1からn、行数も1からnです。
Drupal は、データベース構造に従って Excel の列 1 から n を格納するために n 個のフィールドを使用します。Excel に多数の列がある場合、n 列の値を 1 つのフィールドに格納できます。
ここで私が解決したのは、Excelのn列の値をMySQLのnフィールドに保存することです(nはそれほど大きくありません)

これは、Drupal がアップロードされたファイルを最終的に送信した後の関数です:

コードをコピー
コードは次のとおりです コードをコピー
関数 Excel_upload_form_submit($form, &$form_state) {
set_time_limit(0); $タイムスタンプ = 時間(); // Excel ファイルがアップロードされていることを確認してください
if ($file = file_save_upload(‘file’)) {
$row = 0 //解析された行数
$paseRows = 0; //値のないスキップされた行の数
$insertRows = 0 //挿入された行数
; $table = array(
「dbfield1」、
「dbfield2」、
「dbfield3、
」 「dbfield4」、
「dbfield5」、

「dbfieldn」、
); require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php"); If(($handle = fopen ( $file->filepath, "r" )) !== FALSE) {
$PHPExcel = 新しい PHPExcel (); $PHPReader = 新しい PHPExcel_Reader_Excel2007 (); If (! $PHPReader->canRead ( $file->filepath )) {
$PHPReader = 新しい PHPExcel_Reader_Excel5 (); If (! $PHPReader->canRead ( $file->filepath )) {
「Excel はありません」とエコーします

}
}
$PHPExcel = $PHPReader->load ( $file->ファイルパス ); $currentSheet = $PHPExcel->getSheet(0); /**合計で列が何個あるかを取得する*/
$allColumn = $currentSheet->getHighestColumn(); //列の合計数を取得します。この静的メソッドが使用されない場合、取得される $col はファイル列の最大の英大文字です
$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn()); /**総行数を取得する*/
$allRow = $currentSheet->getHighestRow(); // ループして各セルの内容を読み取ります。行は 1 から始まり、列は A から始まることに注意してください
for($rowIndex = 2; $rowIndex $token_db = $row_db = $field = array(); $i = 0; $query = “; for($colIndex = 0; $colIndex //$addr = $colIndex.$rowIndex; //$cell = $currentSheet->getCell($addr)->getValue(); $cell = $currentSheet->getCellByColumnAndRow($colIndex, $rowIndex)->getValue(); $cell = トリム($cell); If(PHPExcel_RichText の $cell インスタンス) {
//リッチテキスト変換文字列
$cell = $cell->__toString();                                                      If ($colIndex == 'A' && !intval($cell)) {
$paseRows++; 休憩
                                                     $field[] = $table[$i]; $token_db[] = "'%s'";$row_db[] = $cell; $query .= $table[$i]." = ‘%s’, ";
}

$row++; if ($row_db) {
db_query('INSERT INTO {db_import} ('.implode(', ', $field) .', created) VALUES('.implode(', ', $token_db) .', %d)', array_merge($row_db 、配列($タイムスタンプ))); $insertRows++; }
}
fclose ( $handle ); }
Drupal_set_message(t(‘ファイル @file は正常にインポートされました。’, array(‘@file’ => $file->ファイル名))); drupal_set_message(".$row." データの解析が完了し、合計 ".$insertRows." データが追加されました。質問タイプ ID を持つ ".$paseRows." データはありません。"); }
他 {
Drupal_set_message(t('インポートするファイルが見つかりません。'), 'エラー'); $form_state['redirect'] = 'admin/content/db/import'; 戻る
}
}
?>



上記のコード部分のいくつかの点に注意してください:



コードは次のとおりです

$allColumn = $currentSheet->getHighestColumn(); 取得した列は英語大文字の配列インデックスです。 コードをコピー


コードは次のとおりです

$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn());英語の大文字インデックスを数値としてフォーマットし、インデックス値は 0 から始まります。 このコードは、Excel 2007 以前の形式の読み取りをサポートしています。

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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630716.html

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