用vue和django写代码,实现excel表格上传并写入数据库
时间: 2023-05-26 21:07:16 浏览: 485
前端部分:
1.使用vue框架编写前端页面,包括上传控件和表格展示区域。
2.使用axios库将文件上传到后端服务器:
```javascript
methods: {
/* 上传Excel文件 */
handleUpload (file) {
let formData = new FormData()
formData.append('file', file)
axios.post('/upload/excel', formData)
.then(res => {
/* 处理返回的数据,例如将表格数据展示在页面上 */
}).catch(err => {
console.error(err)
})
},
}
```
3.在页面上展示表格数据:
```javascript
data () {
return {
tableData: [] // 表格数据数组
}
},
methods: {
/* 处理上传Excel文件返回的表格数据 */
handleTableData (data) {
/* 将data解析成表格数据数组,例如:
for (let i = 0; i < data.length; i++) {
this.tableData.push({
id: data[i].id,
name: data[i].name,
...
})
}
*/
},
},
```
4.将表格数据展示在页面的table组件中:
```html
<el-table :data="tableData">
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="名称"></el-table-column>
...
</el-table>
```
后端部分:
1.使用django框架编写后端接口,包括文件上传接口和表格数据查询接口。
2.使用pandas库处理Excel文件,并将数据写入数据库:
```python
import pandas as pd
from .models import TableModel
def upload_excel(request):
file = request.FILES['file']
data = pd.read_excel(file)
# 将数据写入数据库
for index, row in data.iterrows():
TableModel.objects.update_or_create(
id=row['id'],
defaults={
'name': row['name'],
...
}
)
return HttpResponse('success')
```
3.查询数据库并返回表格数据:
```python
from .models import TableModel
def get_table_data(request):
data = []
for row in TableModel.objects.all():
data.append({
'id': row.id,
'name': row.name,
...
})
return JsonResponse(data, safe=False)
```
4.配置路由,使前后端能够通过接口进行通信:
```python
from django.conf.urls.static import static
from django.conf import settings
from django.urls import path
from . import views
urlpatterns = [
path('upload/excel', views.upload_excel),
path('get/table', views.get_table_data),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
```
需要注意的是,在上传Excel文件的时候,需要在django的settings文件中设置MEDIA_ROOT和MEDIA_URL。在前端页面中的表格数据展示组件中,需要填写表格数据的属性名和标签名,以及请求接口的地址和方法等信息。
阅读全文