在Django中使用xlrd读取excel表格数据

这篇具有很好参考价值的文章主要介绍了在Django中使用xlrd读取excel表格数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

方法一:按行读取

方法二:按表头与表数据一一对应的关系

方法三:按列的方式读取


之前有说到如何在Django中读取数据库数据写入到excel中 今天来说说如何读取excel中的数据,(读取后就可以写入到数据库中了)​​​​​​​

开始前需要安装xlrd模块

pip install -i https://pypi.douban.com/simple xlrd

 默认安装最新版,支持xls格式的excel文件,如果是xlsx文件格式可能需要安装旧版本的xlrd

方法一:按行读取
import xlrd


class ReadExcel(View):
    def post(self, request):
        excel_file = request.FILES['excel_file']  # 获取上传的Excel文件

        workbook = xlrd.open_workbook(file_contents=excel_file.read())  # 打开Excel文件

        sheet_names = workbook.sheet_names()  # 获取所有工作表的名称
        # 方式一:按行
        data = []  # 存储所有工作表的数据
        for sheet_name in sheet_names:
            sheet = workbook.sheet_by_name(sheet_name)  # 获取具体的工作表

            rows = []
            for row_num in range(sheet.nrows):  # 迭代每一行数据
                row_values = sheet.row_values(row_num)  # 获取当前行的值
                rows.append(row_values)

            data.append({
                'sheet_name': sheet_name,
                'rows': rows,
            })

        return JsonResponse({"res": data})

使用book_data.xls表格文件,内容如下

在Django中使用xlrd读取excel表格数据,django,django,excel,python

 输出结果:

{
    "res": [
        {
            "sheet_name": "图书表",
            "rows": [
                [
                    "图书名",
                    "地址",
                    "年代"
                ],
                [
                    "《Python+Cookbook》第三版中文v3.0.0.pdf",
                    "天津市",
                    "1999.11"
                ],
                [
                    "Django 2.2 官方文档中文版.pdf",
                    "北京市东城区",
                    "1980.07"
                ],
                [
                    "MySQL必知必会(文字版).pdf",
                    "南京市鼓楼区",
                    "2020.08"
                ],
                [
                    "PyCharm知识手册V1.0.pdf",
                    "安徽合肥市",
                    "1987.12"
                ],
                [
                    "流畅的Python.pdf",
                    "南京高淳区",
                    "2000.01"
                ],
                [
                    "深入理解Python中文版高清(Dive+into+Python)@www.java1234.com.pdf",
                    "河南洛阳",
                    "2023.10 "
                ]
            ]
        },
        {
            "sheet_name": "Sheet2",
            "rows": [
                [
                    "图片名",
                    "路径"
                ],
                [
                    "测试",
                    "测试路径"
                ]
            ]
        },
        {
            "sheet_name": "Sheet3",
            "rows": []
        }
    ]
}
方法二:按表头与表数据一一对应的关系
import xlrd


class ReadExcel(View):
    def post(self, request):
        excel_file = request.FILES['excel_file']  # 获取上传的Excel文件

        workbook = xlrd.open_workbook(file_contents=excel_file.read())  # 打开Excel文件

        sheet_names = workbook.sheet_names()  # 获取所有工作表的名称

        # 方式二:按表头与表数据一一对应关系
        data = []  # 存储所有工作表的数据
        for sheet_name in sheet_names:
            sheet = workbook.sheet_by_name(sheet_name)  # 获取具体的工作表
            if sheet.nrows != 0:
                rows = []
                first_row = sheet.row_values(0)  # 原表头数据
                # first_row = ['name', 'address', 'year']  # 使用对应的英文字段替换上面first_row从表中获取的中文表头名
                for row_num in range(1, sheet.nrows):  # 迭代每一行数据
                    row_values = sheet.row_values(row_num)  # 获取当前行的值
                    zip_data = dict(zip(first_row, row_values))
                    rows.append(zip_data)

                data.append({
                    'sheet_name': sheet_name,
                    'rows': rows,
                })

        return JsonResponse({"res": data})

结果如下:

{
    "res": [
        {
            "sheet_name": "图书表",
            "rows": [
                {
                    "图书名": "《Python+Cookbook》第三版中文v3.0.0.pdf",
                    "地址": "天津市",
                    "年代": "1999.11"
                },
                {
                    "图书名": "Django 2.2 官方文档中文版.pdf",
                    "地址": "北京市东城区",
                    "年代": "1980.07"
                },
                {
                    "图书名": "MySQL必知必会(文字版).pdf",
                    "地址": "南京市鼓楼区",
                    "年代": "2020.08"
                },
                {
                    "图书名": "PyCharm知识手册V1.0.pdf",
                    "地址": "安徽合肥市",
                    "年代": "1987.12"
                },
                {
                    "图书名": "流畅的Python.pdf",
                    "地址": "南京高淳区",
                    "年代": "2000.01"
                },
                {
                    "图书名": "深入理解Python中文版高清(Dive+into+Python)@www.java1234.com.pdf",
                    "地址": "河南洛阳",
                    "年代": "2023.10 "
                }
            ]
        },
        {
            "sheet_name": "Sheet2",
            "rows": [
                {
                    "图片名": "测试",
                    "路径": "测试路径"
                }
            ]
        }
    ]
}
方法三:按列的方式读取
import xlrd


class ReadExcel(View):
    def post(self, request):
        excel_file = request.FILES['excel_file']  # 获取上传的Excel文件

        workbook = xlrd.open_workbook(file_contents=excel_file.read())  # 打开Excel文件

        sheet_names = workbook.sheet_names()  # 获取所有工作表的名称

        # 方式三:按列的方式
        data = []  # 存储所有工作表的数据
        for sheet_name in sheet_names:
            sheet = workbook.sheet_by_name(sheet_name)  # 获取具体的工作表
            if sheet.nrows != 0:
                cols = []
                cols_data = {}
                for col_num in range(sheet.ncols):  # 迭代每一列数据
                    first_row = sheet.col_values(col_num, 0, 1)[0]  # 获取每一列第一行的数据(也就是表头)
                    col_values = sheet.col_values(col_num, 1)  # 从列的第二行开始获取数据
                    cols_data.update({first_row: col_values})
                cols.append(cols_data)

                data.append({
                    'sheet_name': sheet_name,
                    'cols': cols,
                })

        return JsonResponse({"res": data})

结果如下:

{
    "res": [
        {
            "sheet_name": "图书表",
            "cols": [
                {
                    "图书名": [
                        "《Python+Cookbook》第三版中文v3.0.0.pdf",
                        "Django 2.2 官方文档中文版.pdf",
                        "MySQL必知必会(文字版).pdf",
                        "PyCharm知识手册V1.0.pdf",
                        "流畅的Python.pdf",
                        "深入理解Python中文版高清(Dive+into+Python)@www.java1234.com.pdf"
                    ],
                    "地址": [
                        "天津市",
                        "北京市东城区",
                        "南京市鼓楼区",
                        "安徽合肥市",
                        "南京高淳区",
                        "河南洛阳"
                    ],
                    "年代": [
                        "1999.11",
                        "1980.07",
                        "2020.08",
                        "1987.12",
                        "2000.01",
                        "2023.10 "
                    ]
                }
            ]
        },
        {
            "sheet_name": "Sheet2",
            "cols": [
                {
                    "图片名": [
                        "测试"
                    ],
                    "路径": [
                        "测试路径"
                    ]
                }
            ]
        }
    ]
}

共列出三种方式读取文章来源地址https://www.toymoban.com/news/detail-542210.html

到了这里,关于在Django中使用xlrd读取excel表格数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用django的APP在前端上传excel通过post传给后端读取并打印

    备研了,博客许久未更了,但是学期末的大作业,遇到了问题并成功解决了,不得不记录一下。 传数据表单必不可少 input用于文件类的上传,相当于先让前端收到这份文件 button用于表单的发送(submit 提交很好理解) 表单中的 action=“/insurance/upload_result” 表明我们要将文件数

    2024年02月10日
    浏览(50)
  • Python如何读取Excel表格数据

    环境: Pycharm IDE 3.9  2021.2.1 Excel作为目前主要的流行数据表格,其存储的数据整齐,强可观性。需要对大量的数据进行分析时,可以利用python脚本语言进行数据分析。 python读取excel数据: 1.打开 pycharm IDE ,新建项目,在IDE 的UI界面下点击左下角的 Python Packages .   此项用于安

    2024年02月05日
    浏览(31)
  • python读取表格数据将pdf文件转excel文件最新可用方法

    【ptf】 【转换后Excel】 可用看到表格内容位置一致,转换完成 (1)安装camelot库 (2)转换代码

    2024年02月15日
    浏览(29)
  • python自动化办公——定制化读取Excel数据并写入到word表格

    最近到了毕业设计答辩的时候,老师让我帮毕业生写一段毕业设计的功能就是提供一个 学士学位授予申请表 ,根据定制化需求,编写定制化代码。 docx格式的word如下图。 再提供一个Excel表格,要求可以直接读取表格里的对应内容,填入到word表格里的对应位置。表格是我自己

    2024年02月10日
    浏览(42)
  • 【python】使用xlrd和xlwt实现表格创建、sheet添加、内容存储

    最近在编程的过程中,总是涉及将数据存储到EXECEL情况,下面将自己实现的方法进行分析与共享,有瑕疵的地方还请赐教。 一、直接上代码 二、测试代码 (1)当无文档路径的情况下,会自动创建一个文档,并将数据存储到表格中 (2)当有文档,无对应的sheet页时,将自动

    2024年02月12日
    浏览(26)
  • Java 读取 Excel 表格—— Easy Excel 基本使用

    确定表头:建立对象,和表头形成映射关系。 不确定表头:每一行数据映射为 MapString, Object ,比如用户自己上传的表格。 监听器:先创建监听器、在读取文件时绑定监听器。单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。 同步读:无需创建

    2024年01月21日
    浏览(30)
  • Python——openpyxl读取Excel表格(读取、单元格修改、单元格加底色)

    🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:一晌小贪欢的博客主页 👍 该系列文章专栏:Python办公自动化专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 ❤️ 欢迎各位佬关注! ❤️ 如我在K列,增加了

    2024年03月20日
    浏览(32)
  • Django和jQuery,实现Ajax表格数据分页展示

    当存在重新请求接口才能返回数据的功能时,若页面的内容很长,每次点击一个功能,页面又回到了顶部,对于用户的体验感不太友好,我们希望当用户点击这类的功能时,能直接加载到数据,请求后端的操作不会呈现在前端,给用户一种无感知的状态。 若希望在不重新加载

    2024年02月08日
    浏览(29)
  • 使用java解析和读取excel表格(EasyExcel的简单使用)

    ** ** Apache POI、JXL、Alibaba EasyExcel等。其中Apache POI基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel文件数据量不大的应用场景; EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下

    2024年01月16日
    浏览(32)
  • Python:使用openpyxl读取Excel文件转为json数据

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files 文档 https://openpyxl.readthedocs.io/en/stable/ https://pypi.org/project/openpyxl/ 安装 环境 读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 输出读取的json数据 读写示例

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包