PHPEXcel和easyui采用MVC框架写一个超大Excel上传到数据库,先插入临时表,根据临时的字段查入实际的数据库,用临时的某个字段是字段判断以前的某个字段重复跳过下一行插入数据并且在上传完显示到上界面
时间: 2024-04-16 07:24:49 浏览: 133
您可以按照以下步骤来实现您的需求:
1. 首先,创建一个MVC架构的项目。您可以使用任何流行的PHP框架,如Laravel、CodeIgniter或Yii等。
2. 在您的视图层中,使用easyui创建一个上传文件的表单,并将表单数据发送到控制器。
3. 在控制器中,接收上传文件,并使用PHPEXcel库读取Excel文件数据。您可以使用PHPEXcel的方法,如`load()`函数来加载Excel文件。
4. 在控制器中,创建一个临时表来存储Excel数据。您可以使用数据库操作类或原生SQL语句来执行插入操作,并将Excel数据插入到临时表中。
5. 接下来,根据临时表中的字段进行查询操作。您可以使用SQL语句来查询具有重复字段的数据行。
6. 根据查询结果,在实际数据库中插入数据。您可以使用数据库操作类或原生SQL语句来执行插入操作,并将数据插入到实际的数据库表中。
7. 最后,将上传数据显示在前端界面上。您可以在控制器中查询实际数据库,并将结果传递给视图层,然后使用easyui来渲染和显示数据。
请注意,以上步骤是一个大致的指导,具体实现还需要根据您所选择的框架和库进行调整。此外,代码的安全性和数据验证也是非常重要的,您可能需要添加适当的验证和过滤来确保数据的准确性和安全性。
相关问题
PHPEXcel和easyui写一个超大Excel上传到数据库
要实现将超大的Excel文件上传到数据库,可以使用PHPExcel库来读取Excel文件的数据,然后使用EasyUI的文件上传组件来实现文件上传功能。下面是一个示例的代码:
1. 首先,确保已经安装了PHPExcel库和EasyUI库。
2. 创建一个上传页面(upload.php),包含一个EasyUI的文件上传组件和一个上传按钮:
```html
<!DOCTYPE html>
<html>
<head>
<title>Excel上传</title>
<link rel="stylesheet" type="text/css" href="easyui/easyui.css">
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
</head>
<body>
<h2>Excel上传</h2>
<input id="excelFile" name="excelFile" class="easyui-filebox" accept=".xls,.xlsx">
<br><br>
<a href="#" class="easyui-linkbutton" onclick="upload()">上传</a>
<script type="text/javascript">
function upload() {
$('#excelFile').filebox('textbox').attr('name', 'excelFile');
$('#excelForm').form('submit', {
url: 'upload_handler.php',
onSubmit: function() {
$.messager.progress();
return true;
},
success: function(data) {
$.messager.progress('close');
$.messager.alert('提示', data, 'info');
}
});
}
</script>
</body>
</html>
```
3. 创建一个处理上传的脚本(upload_handler.php),在这个脚本中使用PHPExcel库来读取Excel数据并将其插入到数据库中:
```php
<?php
require_once 'PHPExcel/IOFactory.php';
// 获取上传的Excel文件
$excelFile = $_FILES['excelFile']['tmp_name'];
// 加载Excel文件
$objPHPExcel = PHPExcel_IOFactory::load($excelFile);
// 获取第一个工作表
$sheet = $objPHPExcel->getActiveSheet();
// 获取行数和列数
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// 循环读取数据
for ($row = 1; $row <= $highestRow; $row++) {
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, null, true, false);
// 将数据插入数据库,这里只是示例,需要根据实际情况进行数据库操作
// $rowData[0][0] 表示第一列的数据,$rowData[0][1] 表示第二列的数据,依此类推
// 例如:将数据插入名为data的表格中的两列name和value中
// $name = $rowData[0][0];
// $value = $rowData[0][1];
// insert into data (name, value) values ('$name', '$value');
}
echo '上传成功!';
?>
```
以上代码仅为示例,实际使用中需要根据数据库类型和表结构进行相应的修改。另外,由于上传大型Excel文件可能会占用较多内存,可能需要对服务器进行相应的配置和优化。
写一个excel上传到数据库展示到前端,要求采用MVC,前端框架easyui
Sure! Here's an example of how you can upload an Excel file, store its data in a database, and display it on the front-end using the MVC pattern and the EasyUI framework:
1. Create the necessary database table to store the Excel data. Let's assume the table is named `excel_data` and has columns `id`, `name`, and `email`.
2. Create a file named `index.php` for the front-end view using EasyUI:
```html
<!DOCTYPE html>
<html>
<head>
<title>Excel Upload</title>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/easyui@1.9.25/themes/default/easyui.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/easyui@1.9.25/jquery.easyui.min.js"></script>
</head>
<body>
<h2>Excel Upload</h2>
<form id="excelForm" method="post" enctype="multipart/form-data">
<input id="excelFile" name="excelFile" type="file">
<button id="uploadBtn" class="easyui-linkbutton" type="submit">Upload</button>
</form>
<table id="datagrid"></table>
<script type="text/javascript">
$(function(){
$('#excelForm').form({
url: 'upload.php',
onSubmit: function(){
return $(this).form('validate');
},
success: function(result){
$('#datagrid').datagrid('reload');
$.messager.show({
title: 'Success',
msg: result,
timeout: 5000
});
}
});
$('#datagrid').datagrid({
url: 'data.php',
fitColumns: true,
columns: [[
{field: 'id', title: 'ID', width: 50},
{field: 'name', title: 'Name', width: 100},
{field: 'email', title: 'Email', width: 150}
]]
});
});
</script>
</body>
</html>
```
3. Create a file named `upload.php` to handle the file upload and data insertion into the database:
```php
<?php
require_once 'PHPExcel/PHPExcel.php';
// Database connection details
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$database = 'your_database';
// File upload directory
$targetDir = 'uploads/';
if (!is_dir($targetDir)) {
mkdir($targetDir, 0777, true);
}
$targetFile = $targetDir . basename($_FILES["excelFile"]["name"]);
move_uploaded_file($_FILES["excelFile"]["tmp_name"], $targetFile);
$objPHPExcel = PHPExcel_IOFactory::load($targetFile);
$worksheet = $objPHPExcel->getActiveSheet();
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
foreach ($worksheet->getRowIterator() as $row) {
$rowData = [];
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
$rowData[] = $cell->getValue();
}
$sql = "INSERT INTO excel_data (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $rowData[0], $rowData[1]);
$stmt->execute();
}
$conn->close();
unlink($targetFile);
echo "Upload successful!";
?>
```
4. Create a file named `data.php` to fetch the data from the database and return it as JSON for the front-end grid:
```php
<?php
// Database connection details
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$database = 'your_database';
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM excel_data";
$result = $conn->query($sql);
$data = array();
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
$conn->close();
echo json_encode($data);
?>
```
Make sure to replace `'your_username'`, `'your_password'`, and `'your_database'` with your actual database credentials.
This example follows the MVC pattern by separating the front-end view (`index.php`), the controller (`upload.php`), and the model (`data.php`).
Remember to include the PHPExcel library in the appropriate locations and adjust the file paths accordingly.
I hope this example helps you with uploading an Excel file, storing the data in a database, and displaying it on the front-end using the MVC pattern and EasyUI framework. Let me know if you have any further questions!
阅读全文