excel文件(记笔记)

自己的一点点愚见

#excel文件操作
# 安装两个库  xlrd用于读取       xlwt用于写入

#1.打开excel文件 获取sheet

import xlrd
workbook=xlrd.open_workbook(".xlsx")
#1.获取sheet名字
workbook.sheet_names()    #这里会报xlrd.biffh.XLRDError: Excel xlsx file; not supported 把xlrd版本降为1.2.0版本即可

#2.根据索引获取指定的sheet对象
workbook.sheet_by_index(0)   #这样的得到的是<xlrd.sheet.Sheet object at 0x000002B833C4E908>
#如果想得到名字 在后面加一个   .name
sheet=workbook.sheet_by_index(0).name

#3.根据名称获取指定的sheet对象
workbook.sheet_by_name('')   #如果要得到汉字  要加name

#4.获取所有的sheet对象
sheets=workbook.sheets()    #不可 在这里最后加 .name
for i in sheets:
    print(i)          #可以在 i 后面加 .name 这样可以得到的是汉字

#5.获取sheet中的行数和列数
sheet=workbook.sheet_by_index(0)      #先指定一个sheet
print({"rows":sheet.nrows,"cols":sheet.ncols})

这一部分主要是 打开文件 和 选择sheet

import xlrd
workbook=xlrd.open_workbook('.xlsx')
sheet = workbook.sheet_by_index(0)    #先选这一个sheet
cell = sheet.cell(1,1)                #获取指定位置的cell  1,1代表第一行第一列的cell
print(cell.value)                     # .value  类似于 .name

cells = sheet.row_slice(1,1,4)        # 1 代表第一行    1,4 代表从1开始到4结束   这里的数字是代表下标
for cell in cells:
    print(cell.value)

cells = sheet.col_slice(0,1,sheet.nrows)  #0 代表第一列   1,sheet.nrows 即从一开始到sheet.nrows(sheet。nrows代表最后一个)
for cell in cells:
    print(cell.value)

#对象 输出 出来 会加上对象的类型   as  number:78.0  text:'姓名'
#第一数字代表行还是列的看前面的函数    如果加valuues 得到的是值 而不是对象

cell_value = sheet.cell_value(0,1)
print(cell_value)

cell_values = sheet.col_values(1,1,sheet.nrows)
print(cell_values)

cell_values = sheet.row_values(1,1,sheet.ncols)
print(cell_values)

#cell中数据的类型
# 0 ----->   XL_CELL_EMPTY       1 ----->  XL_CELL_TEXT
# 2 ----->  XL_CELL_NUMBER       3 ----->  XL_CELL_DATE
# 4 ----->  XL_CELL_BOOLEAN
sheet = workbook.sheet_by_index(0)
cell = sheet.cell(0,0)
print(cell.ctype)
print(xlrd.XL_CELL_TEXT)

cell = sheet.cell(1,1)
print(cell.ctype)
print(xlrd.XL_CELL_NUMBER)

cell = sheet.cell(18,0)
print(cell.ctype)
print(xlrd.XL_CELL_DATE)

cell = sheet.cell(19,0)
print(cell.ctype)
print(xlrd.XL_CELL_BOOLEAN)


cell = sheet.cell(1,1)
print(cell.ctype)
print(xlrd.XL_CELL_EMPTY)

这一部分主要对 sheet.row_values sheet.col_values 了解

import xlrd
import xlwt
workbook=xlrd.open_workbook('.xlsx')
rsheet=workbook.sheet_by_index(0)
nrows=rsheet.nrows
ncols=rsheet.ncols
rsheet.put_cell(0,ncols,xlrd.XL_CELL_TEXT,'总分',None)
rsheet.put_cell(nrows,0,xlrd.XL_CELL_TEXT,'平均分',None)
for i in range(1,ncols):
    grades=rsheet.row_values(i,1,ncols)
    #print(grades)
    total=sum(grades)
    #print(total)
    rsheet.put_cell(i,ncols,xlrd.XL_CELL_NUMBER,total,None)

for j in range(1,nrows+1):
    grades=rsheet.col_values(j,1,nrows)
    average=sum(grades)/len(grades)
    rsheet.put_cell(nrows,j,xlrd.XL_CELL_NUMBER,average,None)

wwt=xlwt.Workbook()
wsheet=wwt.add_sheet('zz')
for row in range(0,nrows+1):
    for col in range(0,ncols+1):
        wsheet.write(row,col,rsheet.cell_value(row,col))
wwt.save('.xlsx')

这一部分是编辑excel

  1. 先读取原来的Excel文件。
  2. 然后在读取的sheet上面进行cell的修改,可以使用sheet.put_cell(row,col,ctype,value,None)方法实现。
  3. 再重新创建一个新的excel文件,然后把之前读取到的数据写入到新的excel文件中。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值