Imports examples
Imports Excel examples, explained clearly.
Open a focused example to see the implementation path, copy-ready PHP, expected workbook behavior, and the production boundary that matters.
01Preview import qualityInspect missing columns, unexpected columns, duplicate candidates, empty values, and sample rows before validation or database writes.
+
Inspect missing columns, unexpected columns, duplicate candidates, empty values, and sample rows before validation or database writes.
MnbExcel::previewImport()ReadSession::previewImport()<?php
use Mnb\PHPExcel\MnbExcel;
$rows = MnbExcel::read(__DIR__ . '/fixtures/students.csv')
->withHeaderRow()
->toArray();
$preview = MnbExcel::previewImport($rows, [
'required_columns' => ['student_id', 'name', 'email'],
'allowed_columns' => ['student_id', 'name', 'email', 'phone'],
'strict_columns' => true,
'duplicate_by' => ['student_id'],
]);
print_r([
'status' => $preview['status'],
'total_rows' => $preview['total_rows'],
'total_columns' => $preview['total_columns'],
'warnings' => $preview['warnings'],
]);02Suggest a column mapBuild an import-screen mapping proposal from source headings, canonical database fields, and known aliases with confidence scores.
+
Build an import-screen mapping proposal from source headings, canonical database fields, and known aliases with confidence scores.
MnbExcel::suggestColumnMap()<?php
use Mnb\PHPExcel\MnbExcel;
$map = MnbExcel::suggestColumnMap(
['Student Number', 'Full Name', 'Email Address', 'Mobile No'],
['student_id', 'name', 'email', 'phone'],
[
'student_id' => ['student number', 'registration no'],
'email' => ['email address', 'mail'],
'phone' => ['mobile', 'mobile no', 'phone number'],
],
minConfidence: 0.60
);
print_r($map);03Validate rows and export failuresValidate imported rows with reusable rules and create a filterable XLSX containing source row numbers and human-readable errors.
+
Validate imported rows with reusable rules and create a filterable XLSX containing source row numbers and human-readable errors.
MnbExcel::validateImport()MnbExcel::fromFailedRows()freezeHeader()autoFilter()<?php
use Mnb\PHPExcel\MnbExcel;
$rows = MnbExcel::read(__DIR__ . '/fixtures/students.xlsx')
->withHeaderRow()
->toArray([
'preserve_original_row_numbers' => true,
]);
$result = MnbExcel::validateImport($rows, [
'student_id' => 'required|string|max:30',
'name' => 'required|string|max:100',
'email' => 'required|email|unique_in_file',
'marks' => 'nullable|numeric|min:0|max:100',
], [
'row_number_key' => '_mnb_original_row_number',
]);
MnbExcel::fromFailedRows($result['failed'])
->freezeHeader()
->autoFilter()
->autoWidth(['min' => 12, 'max' => 48])
->save(__DIR__ . '/output/failed-students.xlsx');04Detect duplicate recordsFind repeated records using one or more business-key columns and report the source row positions involved.
+
Find repeated records using one or more business-key columns and report the source row positions involved.
MnbExcel::duplicateRows()ReadSession::duplicateRows()<?php
use Mnb\PHPExcel\MnbExcel;
$rows = MnbExcel::read(__DIR__ . '/fixtures/contacts.csv')
->withHeaderRow()
->toArray([
'preserve_original_row_numbers' => true,
]);
$duplicates = MnbExcel::duplicateRows($rows, ['email']);
print_r($duplicates);05Import products and update by SKUUse the built-in product schema to map aliases, normalize values, validate rows, and update existing records by SKU.
+
Use the built-in product schema to map aliases, normalize values, validate rows, and update existing records by SKU.
MnbExcel::previewDomainImport()MnbExcel::importProducts()<?php
use Mnb\PHPExcel\MnbExcel;
$pdo = new PDO('sqlite:' . __DIR__ . '/storage/catalog.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec(
'CREATE TABLE IF NOT EXISTS products (' .
'sku TEXT PRIMARY KEY, name TEXT, price REAL, quantity INTEGER, image_url TEXT' .
')'
);
$preview = MnbExcel::previewDomainImport(
'products',
__DIR__ . '/fixtures/products.xlsx',
['sheet' => 'Products', 'limit' => 25]
);
if (($preview['failed_rows'] ?? 0) === 0) {
$result = MnbExcel::importProducts(
__DIR__ . '/fixtures/products.xlsx',
$pdo,
'products',
[
'duplicate_strategy' => 'update',
'unique_by' => ['sku'],
'batch_size' => 500,
'failed_rows_csv' => __DIR__ . '/output/failed-products.csv',
]
);
print_r($result);
}06Generate a validated import templateCreate a product import workbook from the same canonical field metadata used by preview and import validation.
+
Create a product import workbook from the same canonical field metadata used by preview and import validation.
MnbExcel::domainImportTemplate()freezeHeader()autoWidth()save()<?php
use Mnb\PHPExcel\MnbExcel;
MnbExcel::domainImportTemplate('products', [
'title' => 'Product Catalog Import',
'instructions' => 'Keep the SKU unique. Price and quantity must be numeric.',
'sample_rows' => 2,
])
->freezeHeader()
->autoWidth(['min' => 12, 'max' => 42])
->save(__DIR__ . '/output/product-import-template.xlsx');