在開發網絡應用程序時,有時需要從其他程序或者數據源中導入數據。PHP Exel導入就是其中一種常用的方法。
PHP Exel導入的原理是通過將Exel文件讀入內存,再逐行讀取其中的數據進行處理,最終將數據導入到數據庫或者其他應用程序中。
下面我們通過一個具體的例子來說明PHP Exel導入的使用方法。假設我們有一個訂單數據的Exel文件,其中包含訂單號,客戶姓名,商品名稱和數量等信息。我們需要將這些訂單數據導入到我們的數據庫中。
首先,我們需要使用PHP代碼將Exel文件讀入內存中。以下是代碼示例:
$inputFileName = '訂單數據.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
在這個代碼中,我們首先指定要讀取的Exel文件路徑,然后使用PhpSpreadsheet庫中的IOFactory類的load()方法將文件讀入內存。
接下來,我們需要指定要讀取的工作表,以及需要讀取的數據起始行和列。以下是示例代碼:$worksheet = $spreadsheet->getActiveSheet();
$startRow = 2;
$endRow = $worksheet->getHighestRow();
$columns = array(
'A' =>'order_id',
'B' =>'customer_name',
'C' =>'product_name',
'D' =>'quantity'
);
在這個代碼中,我們首先獲取了工作表對象,并指定了要讀取的數據起始行和結束行。然后我們定義了一個對應關系數組,用于指定需要讀取的數據列與數據庫字段的映射關系。
最后,我們通過一個循環依次讀取指定列的數據,并將其導入到數據庫中。以下是完整代碼示例:require 'vendor/autoload.php';
$inputFileName = '訂單數據.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$worksheet = $spreadsheet->getActiveSheet();
$startRow = 2;
$endRow = $worksheet->getHighestRow();
$columns = array(
'A' =>'order_id',
'B' =>'customer_name',
'C' =>'product_name',
'D' =>'quantity'
);
$db = new PDO('mysql:host=localhost;dbname=my_database', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
for($i=$startRow; $i<=$endRow; $i++) {
$data = array();
foreach($columns as $columnIndex=>$columnName) {
$cell = $worksheet->getCell($columnIndex.$i);
if($cell->getDataType()==\PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_NUMERIC) {
$data[$columnName] = $cell->getValue();
} else {
$data[$columnName] = $cell->getCalculatedValue();
}
}
$stmt = $db->prepare('INSERT INTO orders (order_id, customer_name, product_name, quantity) VALUES (:order_id, :customer_name, :product_name, :quantity)');
$stmt->execute($data);
}
在這個代碼中,我們首先使用PDO類連接到數據庫,并做了一些錯誤處理設置。然后在循環中依次讀取指定列的數據,并將其存入$data數組中。最后,我們使用PDO的預處理語句將數據插入到數據庫中。
總結一下,PHP Exel導入是一種非常便捷的將Exel數據導入到應用程序或者數據庫中的方式。通過以上代碼示例,我們可以看到,使用PhpSpreadsheet庫可以很方便地將Exel文件讀入內存,而且讀取數據也非常簡單。當然,我們需要注意一些數據類型的轉換以及數據庫操作的安全性等問題。