使用excelphp读取vue post的xlsx文件,并录入数据,文件读取错误要做提升
时间: 2024-05-03 13:16:32 浏览: 126
首先,需要在前端使用 Vue 将 xlsx 文件通过 POST 请求发送到后端。可以使用 axios 库来发送 POST 请求。示例代码如下:
```javascript
let formData = new FormData();
formData.append('file', file);
axios.post('/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
console.log(response.data);
}).catch(error => {
console.log(error);
});
```
接下来,在后端使用 PHP 解析 xlsx 文件并将数据录入 Excel 表格。可以使用 PHPExcel 库来解析 xlsx 文件和操作 Excel 表格。示例代码如下:
```php
require_once 'PHPExcel/IOFactory.php';
$inputFileName = $_FILES['file']['tmp_name'];
$excelReader = PHPExcel_IOFactory::createReaderForFile($inputFileName);
$excelObj = $excelReader->load($inputFileName);
$worksheet = $excelObj->getActiveSheet();
// 获取表格数据并录入数据库
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$data = [];
foreach ($cellIterator as $cell) {
$data[] = $cell->getValue();
}
// TODO: 将数据录入数据库
}
```
如果文件读取错误,可以在前端和后端都加入错误处理。在前端,可以通过 `catch` 捕获错误并提示用户。在后端,可以使用 `try...catch` 来捕获异常并返回错误信息。示例代码如下:
前端:
```javascript
axios.post('/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
console.log(response.data);
}).catch(error => {
console.log(error);
alert('文件上传失败!');
});
```
后端:
```php
try {
$inputFileName = $_FILES['file']['tmp_name'];
$excelReader = PHPExcel_IOFactory::createReaderForFile($inputFileName);
$excelObj = $excelReader->load($inputFileName);
$worksheet = $excelObj->getActiveSheet();
// 获取表格数据并录入数据库
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$data = [];
foreach ($cellIterator as $cell) {
$data[] = $cell->getValue();
}
// TODO: 将数据录入数据库
}
} catch (Exception $e) {
echo '文件读取错误:' . $e->getMessage();
}
```
阅读全文