数据存储之python下excel的写入和读取(三)

数据存储之python下excel的保存和读取(三)

excel常用的处理表格类数据的工具。
python下可实现excel文件的保存和读取,本文不关注excel存取过程中的样式。

安装工具包

pip3 install xlwt 、
pip3 install xlrd
缩写
xlwt = excel write
xlrd = excel read
row:行 column:列

excel文件的读取


workbook = xlrd.open_workbook("成绩表.xls")

"""
workbook --> 获取sheet对象列表和名字
sheets:获取所有的sheet对象。
sheet_names:获取所有的sheet的名字。

"""
#获取所有的sheet对象列表
print(workbook.sheets())#[]
#获取所有的sheet名称
print(workbook.sheet_names())#['text1']
"""
workbook --> 获取sheet
sheet_by_index:根据索引获取sheet对象。
sheet_by_name:根据名字获取sheet对象。
"""
#通过索引查找sheet
sheet1 = workbook.sheet_by_index(0)
#通过名称查找sheet
sheet2 = workbook.sheet_by_name("text1")

"""
sheet的属性:
sheet的name,nrows,ncol属性(名称,总行数,总列数)
"""
print(sheet1.nrows,sheet1.ncols)#  4 5
print(sheet1.name)#"text1"

"""
cell是excel每个单元格的对象,属性:.value  .ctype
cell中内容的类型:
    1.xlrd.XL_CELL_TEXT(Text):文本类型。
    2.xlrd.XL_CELL_NUMBER(Number):数值类型。
    3.xlrd.XL_CELL_DATE(Date):日期时间类型。
    4.xlrd.XL_CELL_BOOLEAN(Bool):布尔类型。
    5.xlrd.XL_CELL_EMPTY:空白数据类型。
"""

"""
sheet--> cell 获取cell对象或者值
1.sheet.cell(row,col):获取指定行和列的cell对象。
2.sheet.row_slice(row,start_col,end_col):获取指定行的某几列的cell对象。
3.sheet.col_slice(col,start_row,end_row):获取指定列的某几行的cell对象。
4.sheet.cell_value(row,col):获取指定行和列的值。
5.sheet.row_values(row,start_col,end_col):获取指定行的某几列的值。
6.sheet.col_values(col,start_row,end_row):获取指定列的某几行的值。
"""
print(sheet1.cell(0,0))#
print(sheet1.cell(0,0).value)
print(sheet1.row_slice(1,0,3))#[text:'张三', number:1.0, number:23.0]
print(sheet1.col_slice(2,0,3))#[text:'语文', number:23.0, number:89.0]
print(sheet1.cell_value(0,0))#姓名
print(sheet1.row_values(1,0,3))#['张三', 1.0, 23.0]
print(sheet1.col_values(2,0,3))#['语文', 23.0, 89.0]
print(sheet1.cell(0,0).ctype)#1
print(sheet1.cell(1,2).ctype)#2
#1和2对应cell的数据类型

excel文件写入和保存

1.创建workbook对象 workbook = xl.Workbook()
2.创建sheet对象 sheet1 = workbook.add_sheet("班级1")#sheet的名字
3.写入数据 sheet.write(row, col,data)#按(行,列,值)写入对应的cell中
4.保存文件workbook.save("file.xls")

import xlwt

workbook = xlwt.Workbook()
sheet1 = workbook.add_sheet("text1")
headers = ["姓名","班级","语文","数学","英语"]
for i,j in enumerate(headers):
    sheet1.write(0,i,j)
data =[
    ["张三",1,23,34,45],
    ["李四",1,89,90,91],
    ["王五",1,34,56,90]
]
for row,j in enumerate(data):
    for  col,dat in enumerate(j):
        sheet1.write(row+1,col,dat)
workbook.save("成绩表.xls")

实例

对原表格("成绩表.xls")进行修改,增加总分一列。

原表格如下:
成绩表

代码:
#打开原表格的workbook,创建用于写入的新表格的workbook
rd_workbook = xlrd.open_workbook("成绩表.xls")
wt_workbook = xlwt.Workbook()
#打开原表格的sheet 和创建新表格的sheet
rd_sheet = rd_workbook.sheet_by_index(0)
wt_sheet = wt_workbook.add_sheet("1班")
#原sheet中进行数据计算和添加
old_data = []
rd_sheet.put_cell(0,5,xlrd.XL_CELL_TEXT,"总分",None)#添加表头
for row in range(1,4):
    row_list = rd_sheet.row_values(row,2,rd_sheet.ncols)
    rd_sheet.put_cell(row,5,xlrd.XL_CELL_NUMBER,sum(row_list),None)

# for i in  range(0,rd_sheet.nrows):
#     print(rd_sheet.row_values(i,0,rd_sheet.ncols))
"""
['姓名', '班级', '语文', '数学', '英语', '总分']
['张三', 1.0, 23.0, 34.0, 45.0, 102.0]
['李四', 1.0, 89.0, 90.0, 91.0, 270.0]
['王五', 1.0, 34.0, 56.0, 90.0, 180.0]
"""
#将数据写入新表格的sheet
for row in range(0,rd_sheet.nrows):
    for col in range(0,rd_sheet.ncols):
        wt_sheet.write(row,col,rd_sheet.cell_value(row,col))  #每个cell都写入新表格的cell
#保存新的excel表格
wt_workbook.save('班级1.xls')

新表格:


班级1.xls

读取原文件后,利用put_cell修改,修改后,写入新表格的cell,并保存为新的文件,注意,读和写是分开的,只是值的传递,切不可进行sheet的混淆。

你可能感兴趣的:(数据存储之python下excel的写入和读取(三))