1

私が望んでいることを実行するクエリを考えようとしていますが、それは私を困惑させたので、アイデアのためにいくつかの頭脳を選ぶと思いました.

各行と各列のループに読み取られて変換されるExcelファイルがあります。

Excelファイルには約5000の値があるため、多くのループが発生しています。2番目のループ内で列コードをデータベースに照会したいのですが、データベース内にいずれでもない値がある場合ループしているコードは削除されます。また、ループ内にあるがデータベース上にないコードは、ページにエコーされます。

スクリプトは正常に動作していますが、混乱しているクエリを構造化しているだけです。

どんなアドバイスでも大歓迎です、サイモン

私のコード:

fileName    = '2_1_2013_UPC_customer.xlsx';
$objPHPExcel = PHPExcel_IOFactory::load("2_1_2013_UPC_customer.xlsx");
include_once dirname(__FILE__) . ('/PHPExcel/Writer/Excel2007.php');
require_once dirname(__FILE__) . '/PHPExcel/IOFactory.php';
$objPHPExcel = PHPExcel_IOFactory::load("2_1_2013_UPC_customer.xlsx");
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $worksheetTitle     = $worksheet->getTitle();
    $highestRow         = $worksheet->getHighestRow(); // e.g. 10
    $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $nrColumns          = ord($highestColumn) - 64;
    for ($row = 2; $row <= $highestRow; ++$row) {
        for ($col = 0; $col < $highestColumnIndex; ++$col) {
            $cell     = $worksheet->getCellByColumnAndRow($col, $row);
            $val      = $cell->getValue();
            $dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);

            if ($val == null) {
            } else {

                if ($col == 0) {
                $name = $val;
                }
                if ($col == 2) {
                $description = $val;
            }
            if ($col == 3) {
                $reference = $val;
            }
            if ($col == 4) {
                $weight = $val;
            }
        }
}

}
4

1 に答える 1

1

ループするときに、Excel ファイル内のすべてのコードの配列を作成します。Excel ファイルにすべてのコードを取得したら、データベースにクエリを実行し、そこにあるすべてのコードの配列を取得します。次に、それらを簡単に比較できます。すべての php_excel コードについて心配する必要がなくなったら、簡単に実行できるはずです。2 つの配列を分離したら、php の array_search 関数を使用して、コードが両方の配列に存在するかどうかを確認し、それを処理できます。

于 2013-03-29T00:01:53.047 に答える