Django读取前端上传的CSV / Excel文件

前端上传文件代码:

<template>
	<div>
		<div>
			<el-upload class="upload-demo" ref="upload" action="http://127.0.0.1:8000/data/" :on-preview="handlePreview"
				:on-remove="handleRemove" :on-success="handleSuccess" :on-error='handleFail' :file-list="fileList"
				:multiple="false" :limit="1" :auto-upload="false">
				<el-button slot="trigger" size="small" type="primary">选择文件</el-button>
			</el-upload>
		</div>

		<div>
			<el-button slot="trigger" size="small" type="success" @click="submitUnpload()">上传文件</el-button>
		</div>
	</div>
</template>


<script>
	export default {
		data() {
			return {
				fileList: [],
				data: [],
			}
		},
		methods: {

			handleFail() {
				this.$message({
					type: 'error',
					message: '上传失败',
					duration: 1000
				})
			},
			// 成功上传到服务器后返回的内容
			handleSunccess(e) {
				this.data = e
			},

			// 上传文件到服务器
			submitUnpload() {
				this.$refs.upload.submit()
				this.$message({
					type: 'success',
					message: '上传成功',
					duration: 1000
				})
			},

			// 删除文件
			handleRemove(file) {
				this.$message({
					type: "success",
					message: "删除成功",
					duration: 1000
				})
			},
		}

	}
</script>

<style>
</style>

在这里插入图片描述

Django获取前端上传的文件:

class Data(APIView):
 	def post(self, request):
        file_obj = request.FILES.get("file")
        ......

通过csv模块读取csv文件,不需要打开文件,通过read()方法读取后传给csv.reader()

class Data(APIView):

 	def post(self, request):
 	
        file_obj = request.FILES.get("file")
		file_data = file_obj.read().decode("utf-8-sig")
        rows = csv.reader(io.StringIO(file_data), delimiter=',')
        
        for row in rows:
        	row #读取的数据

pandas读取:

class StatisticDmanday(APIView):

    def post(self, request):
    
        file_obj = request.FILES.get("file")
        df = pd.read_csv(file_obj)

openpyxl读取excel文件:

class StatisticDmanday(APIView):

    def post(self, request):
    
 		wb = openpyxl.load_workbook(file_obj)
 		sheetnames = wb.get_sheet_names()
 		ws = wb.get_sheet_by_name(sheetnames[0])
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Django的视图函数来读取CSV文件并将其可视化。以下是一个简单的例子: 1. 首先,在Django项目的根目录下创建一个名为“media”的文件夹,用于存储CSV文件。 2. 在项目的urls.py文件中添加以下代码: ``` from django.conf.urls.static import static from django.conf import settings urlpatterns = [ # ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ``` 这将允许我们在浏览器中访问media文件夹中的文件。 3. 创建一个视图函数来读取CSV文件并将其可视化: ``` import csv from django.http import HttpResponse from django.shortcuts import render def csv_view(request): with open('media/data.csv') as file: reader = csv.reader(file) data = [] for row in reader: data.append(row) context = {'data': data} return render(request, 'csv_template.html', context) ``` 这个视图函数将读取名为“data.csv”的文件并将其存储在数据列表中。然后,将数据发送到名为“csv_template.html”的模板中进行可视化。 4. 创建一个模板文件csv_template.html”: ``` <!DOCTYPE html> <html> <head> <title>CSV Data</title> </head> <body> <table> {% for row in data %} <tr> {% for value in row %} <td>{{ value }}</td> {% endfor %} </tr> {% endfor %} </table> </body> </html> ``` 这个模板文件将在表格中显示CSV数据。 5. 最后,在项目的urls.py文件中添加视图函数的路由: ``` from django.urls import path from .views import csv_view urlpatterns = [ path('csv/', csv_view, name='csv_view'), # ... ] ``` 现在,当我们访问“/csv/”时,将调用csv_view函数并显示CSV数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久醉绕心弦,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值