新旧Excel文件的读写

一、excel文件的读写

微软的Excel的后缀名:.xls .xlsx
.xls–2007以前的文件后缀名,最多容纳256列16000+行数据
.xlsx–2007年开始文件使用的后缀名,最多容纳16000+列1048567行数据
Excel 2007开始兼容xls xlsx后缀名

python能够操作Excel的模块:openpyxl、xlsxwriter、xlwt、pandas、xlrd、xlutils、win32com等等
旧版本模块:xlwt xlrd
新版本模块:openpyxl

安装三方模块 windows -- pip install xxx
安装模块的两种方法
1、控制台Terminal
2、可视化安装:pycharm --file--settings--project--python Interpreter--'+'--在搜索框中输入模块名称--install

查看已经安装过的模块:pip list

如何安装模块到虚拟环境
1、激活虚拟环境file-settings--Tools---Terminal--shell path---cmd(从下拉框中选择)
控制台中Terminal中显示venv则虚拟环境已激活
2、使用 venv/scripts/activate

工作簿:一个Excel文件就是一个工作簿
工作表:一个工作簿的多张表格
单元格:存储信息的方格
excel保存文件在最后保存,这是区别于open()方法的

二、新版Excel写操作

用到的模块:openpyxl

Excel 新建文件Workbook()如果文件存在 openpyxl.load_workbook(文件路径和文件名)

  1. 新建一个Excel文件

    import openpyxl
    file=openpyxl.Workbook()
    
  2. 操作工作表

    # 创建工作表对象:create_sheet(表名,下标)
    # 如果直接在工作簿中追加工作表,不用写下标
    file.create_sheet('学生成绩',0)
    file.create_sheet('学生成绩1')
    
    # 查看工作簿中已经存在的工作表:sheetnames
    print(file.sheetnames)
    
    # 移除工作表remove(表名)--表:工作簿对象[工作表]
    file.remove(file['Sheet'])
    
  3. 向工作表中写入数据

    # cell(行号,列号)--定位单元格  value--获取单元格的内容
    # 定位单元格的方法:
    #  1.使用cell()定位行号和列号;2.使用列号行号定位单元格  两种形式查看数据都需要用value
    file['学生成绩'].cell(1,1).value='姓名'
    file['学生成绩'].cell(1,2).value='性别'
    print(file['学生成绩'].cell(1, 2).value)
    file['学生成绩']['AA1']='姓名'
    print(file['学生成绩']['AA1'].value)
    
  4. 保存文件

    # 保存文件
    file.save('./学生成绩.xlsx')
    
三、新版Excel读操作

用到的模块:openpyxl

max_row–获取xlsx文件中最大行数
max_column–获取xlsx文件中最大列数

import openpyxl
# 加载xlsx文件
file=openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws=file['成都链家二手房数据汇总']
rows=ws.max_row
col=ws.max_column
for i in range(1,rows+1):
    for j in range(1,col+1):
        print(ws.cell(i,j).value)
四、csv文件数据写入xlsx
  1. 新建xlsx文件,用于存放从csv文件中读取的数据

  2. 新建工作表

  3. 从源文件读数据

    import os
    import csv
    import openpyxl
    # 新建xlsx文件  用于存放从csv文件中读出来的数据
    file=openpyxl.Workbook()
    # 新建工作表
    file.create_sheet('成都链家二手房数据汇总')
    # ---------------------------------
    # 从源文件读数据
    # lisdir():能够读取指定文件夹下的所有子文件
    file_list=os.listdir('./data')
    print(file_list)
    # 闯将一个变量count,作用计算,进行行号的递增
    count=0
    for i in file_list:
        if i[-9:]=='二手房信息.csv' and i[:2]=='成都':
            # 返回文件对象
            f=open(f'./data/{i}','r',encoding='utf-8')
            # 读数据
            read_data=csv.reader(f)
            for j in read_data:
                count += 1
                # excel 只能一个单元格的写,不能整行写
                for x in range(0,len(j)):
                    # 根据每一条数据长度判断写n列
                    file['成都链家二手房数据汇总'].cell(count,x+1).value=j[x]
            f.close()
    file.save('./成都链家二手房.xlsx')
    print('打印完成!')
    
五、旧版Excel读写操作

用到的模块:xlwt(xls写),xlrd(xls读)

模块的安装:pip install xlwt xlrd

  1. a. 创建文件

    b. 创建调用工作表—add_sheet(工作表名字)

    c. 写入数据

    d. 保存文件

    import xlwt
    import random
    # 创建文件
    wb=xlwt.Workbook()
    # 创建调用工作表 add_sheet(工作表名字)
    sheet1=wb.add_sheet('一年级一班成绩')
    sheet2=wb.add_sheet('一年级二班成绩')
    sheet3=wb.add_sheet('一年级三班成绩')
    # 写入数据--write(行,列,value)
    names=['lili','nana','cindy','linda']
    for i in range(len(names)):
        sheet1.write(i,0,names[i])
        for j in range(1,4):
            # 工作表.write(row,col,content)
            sheet1.write(i,j,random.randint(0,100))
    # 保存文件
    wb.close()
    
  2. a. 打开文件

    b. 选择工作表

    sheet_names()--查看存在的所有工作表
    sheet_by_index()--索引
    sheet_by_name()--通过工作表名字
    

    c. 获取数据

    d. 保存文件

    import xlrd
    # 打开文件
    wb=xlrd.open_workbook('./test/一年级成绩表.xls')
    # 选择工作表
    # sheet_names()--查看存在的所有工作表
    print(wb.sheet_names())
    # sheet_by_index()--索引
    # sheet_by_name()--通过工作表名字
    ws=wb.sheet_by_index(0)
    print(ws.cell(0,0).value)
    ws1=wb.sheet_by_name('一年级一班成绩')
    print(ws1.cell(0,0).value)
    # 获取行列数 nrows  ncols
    print(ws1.nrows,ws1.ncols)
    wb.close()
    

注意openpyxl和```xlwt、xlrd``的区别

  1. openpyxl行列号从1开始,xlwt、xlrd行列号从0开始
  2. 两者都可以对工作表进行操作
  3. 两者都可以用单元格定位的形式进行单元格操作
  4. xlwt写操作使用write()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

兮知

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

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

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

打赏作者

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

抵扣说明:

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

余额充值