ホームページ  >  記事  >  バックエンド開発  >  Drupal が Excel を読み取り、データベース インスタンスをインポートする_PHP チュートリアル

Drupal が Excel を読み取り、データベース インスタンスをインポートする_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:37:03730ブラウズ

PHPExcel は、Office Excel ドキュメントを操作するために使用される PHP クラス ライブラリであり、Microsoft の OpenXML 標準と PHP 言語に基づいています。これを使用すると、Excel (BIFF) .xls、Excel 2007 (OfficeOpenXML) .xlsx、CSV、Libre/OpenOffice Calc .ods、Gnumeric、PDF、HTML など、さまざまな形式のスプレッドシートの読み取りと書き込みができます。

1. Drupal は Library を通じて PHPExcel を呼び出します
PHPExcel をダウンロードした後、それを Drupal ディレクトリにアップロードします: sites/all/libraries/PHPExcel
ライブラリ モジュールがプロジェクトにインストールされている場合は、libraries_load($name) を通じて呼び出すことができます。 ;。
ライブラリ モジュールがインストールされていない場合は、次のコードを使用して呼び出すことができます:

コードをコピーします コードは次のとおりです:
require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory .php");

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

コードをコピーします コードは次のとおりです:
set_time_limit(0);

実行時間が制限されていないことを確認します。
2. Drupal は Excel を読み取り、データベースにインポートします
Drupal は、Excel ファイルをアップロードし、Excel の内容を読み取り、データベースに書き込み、インポート結果メッセージを出力した後に実装します。
まとめると、以下の点になります:
1. Drupal は Excel の複数の行と列の内容を読み取ります。列の数は 1 から n であり、行の数も 1 から n です。
2.Drupal n フィールドは、データベース構造に従って Excel の列 1 から n を格納するために使用されます。Excel に多数の列がある場合、n 列の値を 1 つのフィールドに格納できます。
3. ここで私が解決するのは、Excel の n 列の値を MySQL の n フィールドに保存することです (n はそれほど大きくありません)

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

コードをコピーします コードは次のとおりです:
function Excel_upload_form_submit($form, &$form_state) {
set_time_limit(0);
$timestamp = time();
// 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 = new PHPExcel ();
$PHPReader = new PHPExcel_Reader_Excel2007 ();
if(!$ phpreader-> canread($ file-> filepath)){$ phpreader = new phpexcel_reader_excel5(); ;getHighestColumn(); このメソッドを使用します。 Sheet->getHighestRow();
//ループして読み取ります各セルの内容。1 から始まる列は A から始まることに注意してください。 for ($ rowindex = 2; $ rowindex & lt; = $ allRow; $ rowindex ++) {
$ token_db = $ row_db = $ field = Array (); 0; $ Query = ";
for ($ colorDex = 0; $ colorDex & lt; = $ color; $ colorDex ++) {
// $ addr = $ color.heet-& gt; getcell ($addr)- ≫ getValue(); $ cellsheet-> i ]." = '%s', ";
$i++; , $field) ', created) VALUES('.implode(', ', $token_db) .', array_merge($row_db) , array($timestamp))); ハンドル );
}
drupal_set_message(t('ファイル @file が正常にインポートされました。', array('@file' => $file->filename));
drupal_set_message( "Parse ".$row." データは完了し、合計 ".$insertRows." 個のデータが追加されましたが、質問タイプ ID を持つ ".$paseRows." 個のデータはありません。 ");
}
else {
drupal_set_message(t('インポートするファイルが見つかりません。'), 'error');
$form_state['redirect'] = 'admin/content/db/import';
return;
}
}
?>


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



コードをコピーします

コードは次のとおりです:


$allColumn = $currentSheet->getHighestColumn() // 取得された列は英語の大文字の配列インデックス。
$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn()); //英語の大文字インデックスを数値にフォーマットし、インデックス値は 0 から始まります。


このコードは、Excel 2007 以前の形式の読み取りをサポートしています。




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

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/736822.html

技術記事

PHPExcel は、Office Excel ドキュメントを操作するために使用される PHP クラス ライブラリであり、Microsoft の OpenXML 標準および PHP 言語に基づいています。これを使用すると、Exc... など、さまざまな形式のスプレッドシートの読み取りと書き込みができます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。