python读写excel

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

1、问题

对成绩单信息进行统计,包括试卷中各个题目的得分情况。由于手动统计太过费时,因此想到使用python进行处理,处理文件类型为.xlsx
python读取excel,python学习,python读写文件

2、使用python库

xlrd:读取excel数据(只能读取)
如果只想读excel文件可以使用,安装时不要使用pip install xlrd,存在版本不一致问题。
python读取excel,python学习,python读写文件

正确安装:进入python官网下载http://pypi.python.org/pypi/xlrd模块安装,但需要注意版本,我在使用xlrd2.0.1读取文件(xlrd.open_workbook())时报错xlrd.biffh.XLRDError: Excel xlsx file; not supported其实是版本不一致,xlrd版本过高。
python读取excel,python学习,python读写文件

最终下载的xlrd3,也是从官网下载的安装包:https://pypi.org/project/xlrd3/,利用pip install xxxxx.whl安装使用时import xlrd3python版本为3.7
python读取excel,python学习,python读写文件

xlwt:写入excel文件,同样,在使用pip install xlwt时安装失败,进入官网下载安装包:https://pypi.org/project/xlwt
python读取excel,python学习,python读写文件

以上两个库只能单独读取或写入excel文件,对于既读又写很麻烦,因此我最终使用的是openpyxl。
**③openpyxl:**直接使用pip install安装失败,进入https://pypi.org/project/openpyxl下载安装包。
python读取excel,python学习,python读写文件

3、使用:只对单元格的数据进行读取和写入

xlrd3xlrd3.open_workbook(path)打开xlsx文件;sheet_by_index(0)根据索引找到第一个工作簿,也可以根据工作表的名字定位;.cell_value(j+1, i+3))根据行-列定位单元格,读取单元格数据,注意从0开始。

import xlrd3

test_score = [5., 10., 20., 20., 15., 6., 6., 6., 6., 6.]  # 每小题分数

path = 'XXXXX\\成绩单.xlsx'

excel_ = xlrd3.open_workbook(path)  # 打开文件

table_1 = excel_.sheet_by_index(0)  # 也可以直接根据工作表的名字读取

person_ = [[] for i in range(11)]  # 存单元格数据

for i in range(11):  # 题号/ 列号
    for j in range(6):  # 人数
        print(table_1.cell_value(j+1, i+3))  # 按单元格读取数据
        if table_1.cell_value(j+1, i+3) != '' and table_1.cell_value(j+1, i+3) != '旷考':
            person_[i].append(table_1.cell_value(j+1, i+3))
    # 统计
    count = 0
    for k in range(len(person_[i])):
        if person_[i][k] <= test_score[i] * 1.0 and person_[i][k] >= test_score[i] * 0.9:  # 统计
            count += 1

由于我只是做简单的统计,涉及用法不多,其他的可以参考:
https://blog.csdn.net/miaoca/article/details/120129553
https://blog.csdn.net/u013250071/article/details/81911434

openpyxl:
load_workbook(path)打开xlsx文件;excel_['Sheet1']根据工作簿名字定位;cell(j, i).value根据行-列定位单元格,读取单元格数据,注意从1开始。想要在k行m列写入新的数据时,直接对单元格进行赋值,cell(k,m).value=x更改后直接使用save保存文件就可以,为避免覆盖原文件可以重命名。

from openpyxl import workbook, load_workbook

test_score = [5., 10., 20., 20., 15., 6., 6., 6., 6., 6., 100., 100., 100., 100.]
path = 'XXXXX\\成绩单.xlsx'
excel_ = load_workbook(path)  # 载入文件

table_1 = excel_['Sheet1']  # 根据工作表名字定位

person_ = [[] for i in range(14)]
print(person_)
for i in range(14):  # 列号
    if i != 11:
        for j in range(82):  # 行号
            # print(table_1.cell(j+2, i+4).value)
            if table_1.cell(j+2, i+4).value != '' and table_1.cell(j+2, i+4).value != '旷考' and table_1.cell(j+2, i+4).value != None:
                person_[i].append(float(table_1.cell(j+2, i+4).value))
        # 统计
        # 0.9 - 1.0
        count = 0
        for k in range(len(person_[i])):
            if person_[i][k] <= test_score[i] * 1.0 and person_[i][k] >= test_score[i] * 0.9:
                count += 1
        # print(j, count)
        table_1.cell(j+3, i+4).value = count  # 写入数据
        # 0.8 - 0.9
        count = 0
        for k in range(len(person_[i])):
            if person_[i][k] < test_score[i] * 0.9 and person_[i][k] >= test_score[i] * 0.8:
                count += 1
        # print(j, count)
        table_1.cell(j+4, i+4).value = count

        # 0.7 - 0.8
        count = 0
        for k in range(len(person_[i])):
            if person_[i][k] < test_score[i] * 0.8 and person_[i][k] >= test_score[i] * 0.7:
                count += 1
        # print(j, count)
        table_1.cell(j + 5, i + 4).value = count

        # 0.6 - 0.7
        count = 0
        for k in range(len(person_[i])):
            if person_[i][k] < test_score[i] * 0.7 and person_[i][k] >= test_score[i] * 0.6:
                count += 1
        # print(j, count)
        table_1.cell(j + 6, i + 4).value = count

        # 0. - 0.6
        count = 0
        for k in range(len(person_[i])):
            if person_[i][k] < test_score[i] * 0.6:
                count += 1
        # print(j, count)
        table_1.cell(j + 7, i + 4).value = count

        # max
        max_ = max(person_[i])
        table_1.cell(j + 8, i + 4).value = max_

        # min
        min_ = min(person_[i])
        table_1.cell(j + 9, i + 4).value = min_

        # average
        average = sum(person_[i])/len(person_[i])
        table_1.cell(j + 10, i + 4).value = average

excel_.save('XXXXX\\成绩单(副本).xlsx')  # 更新工作表,为避免覆盖原工作表,可以另存

其他关于单元格处理、绘图、样式设置可参见:
https://blog.csdn.net/weixin_41546513/article/details/109555832

4、其他:

①在处理通过公式计算得到的单元格时,读取时读到的并不是数据,而是公式,如(2,3)=(2,1)*0.9+(2,2)*0.1,在读(2,3)时得到的是(2,1)*0.9+(2,2)*0.1,此时可以先复制数据→清空单元格内容→只粘贴数值。文章来源地址https://www.toymoban.com/news/detail-589677.html

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

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

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

相关文章

  • Python 实现txt、excel、csv文件读写【附源码】

    前言 一、txt文件读写 二、excel文件读写 总结 本文介绍使用Python进行文件读写操作,包括txt文件、excel文件(xlsx、xls、csv) 编译器使用的是PyCharm read()                  # 一次性读取全部内容 readline()            # 读取第一行内容 readlines()          # 读取文本全部内

    2024年02月01日
    浏览(70)
  • Python 创建或读取 Excel 文件

    Excel是一种常用的电子表格软件,广泛应用于金融、商业和教育等领域。它提供了强大的数据处理和分析功能,可进行各种计算和公式运算,并能创建各种类型的图表和可视化数据。Excel的灵活性使其成为处理和管理数据的重要工具。本文将介绍如何使用  Spire.XLS for Python  通

    2024年02月10日
    浏览(41)
  • 【python】Excel文件的读取操作

     输出结果: 需要注意的是,我用的xlrd版本是 1.2.0,不是最新版本的,最新版本可能不支持读取xlsx,所以才会出现读取xlsx文件报错的情况,自行降版本试下  输出结果:  使用pandas模块读取Excel文件时,可能会报:ImportError: Missing optional dependency \\\'openpyxl\\\'. Use pip or conda to ins

    2024年02月13日
    浏览(43)
  • Python读取写入数据到Excel文件

    【Linux干货教程】Ubuntu Linux 换源详细教程 大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! Hello,各位看官老爷们好,洲洲已

    2024年02月12日
    浏览(83)
  • [代码案例]学会python读写各类文件的操作(excel,txt,mat)

    python读写三类文件 excel文件 txt文件 mat文件

    2024年02月13日
    浏览(68)
  • 【python读取excel文件保存为矩阵形式】

    python实现对excel表格不同文件形式的读取 我最近在用 pycharm 读取excel数据出现几个莫名其妙的问题, 我解决问题之后,觉得还是把这些坑都写清楚,方便 python 的初学者。  用xlrd库读取.xls文件  用库openpyxl读取.xlsx文件  \\\'.xls文件的读取\\\' \\\'.xlsx文件的读取\\\' 

    2024年02月13日
    浏览(51)
  • Python读取csv、Excel文件生成图表

    简介 本文章介绍了通过读取 csv 或 Excel 文件内容,将其转换为折线图或柱状图的方法,并写入 html 文件中。 目录 1. 读取CSV文件 1.1. 生成折线图 1.1.1. 简单生成图表 1.1.2. 设置折线图格式 1.2. 生成柱状图 1.2.1. 简单生成图表 1.2.2. 设置柱状图格式 2. 读取Excel文件 2.1. 生成折线图

    2024年02月15日
    浏览(52)
  • 【Python+Selenium】 实现对excel文件的读写操作,轻轻松松一步到位

    利用selenium在做自动化测试的时候,经常会用到数据来做批量测试,常用的方式有读取txt文件,xml文件,csv文件以及excel文 件几种。 使用 excel 来做数据管理时,需要利用 xlrd、xlwt 开源包来读写 excel。 在C:UsersAnyDesktop下,我们有一个名字叫test1的excel文件,里面的Sheet1数据表

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

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

    2024年02月15日
    浏览(43)
  • python如何批量读取一个文件夹里的所以excel文件

    在数据分析工作中,尝尝需要处理多个不同月的excel文件,但无奈与excel文件的局限性,不能同时处理多个月的excel数据,所以python的批量读取excel文件就显得十分重要,下面我将展示如何用python将每个月度的excel数据进行读取并汇总处理和输出。 最好excel的文件名就是按照日期

    2024年02月16日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包