Python实现excel数据的读取和写入
首先,很感谢B站和网上的其他博客,个人觉得博主的文章很全面~,谢谢
https://www.bilibili.com/video/BV14p4y1e7RK?from=search&seid=15752825247017275522&spm_id_from=333.337.0.0,
https://blog.csdn.net/zhouz92/article/details/107119898?spm=1001.2014.3001.5501
其次,写这篇更多的是回顾今天所学:使用python中的xlrd模块和xlwt模块实现对Excel中数据的写入和读取操作。
目标:
- 新建Excel工作表
- 向具体的单元格写入数据
- 读入其他Excel表的内容。因为我想实现第二步写入的数据来自其他的Excel表
- 对单元格添加一些样式
- 我把每个小目标分别写成了函数,使得代码看起来思路清晰
详细代码:
分别安装模块: pip install xlrd pip install xlwt
1.创建新的excel表函数:
# 创建excel表
def create_excel():
work_book = xlwt.Workbook() # 新建工作簿
# cell_overwrite_ok默认是False,是否覆盖
ws = work_book.add_sheet("Test1", cell_overwrite_ok=True) # 新建工作表
return work_book, ws
2.向具体的单元格写入数据:
这里先向(0,0)(1,1)单元格写入数据,后期从其他工作表中读取数据后再修改
# 向具体的工作表的单元格写入数据
def write_data(work_book, work_sheet): # 传入的参数为:工作簿,工作表
# 向单元格写入内容
work_sheet.write(0, 0, "123")
work_sheet.write(1, 1, "come on")
work_book.save("Test.xls")
3.读取excel中的数据:
# 读取excel表中的数据
def read_data(path):
work_book = xlrd.open_workbook(path)
sheet = work_book.sheet_by_index(0) # 根据索引获取具体是哪一个工作表,也可以根据工作表的名字来获取工作表
print("一共有:", sheet.nrows, "行", sheet.ncols, "列")
4.样式函数:
我这里目前只是设置了一下字体,当然如果有其他需求,可以在这个函数不断地添加需求,例如对齐方式等。
# 设置单元格样式
def change_style():
style = xlwt.XFStyle() # 初始化样式
# 字体的设置
c_font = xlwt.Font() # 设置字体的对象并初始化
c_font.name = "宋体"
c_font.bold = True # 加粗
c_font.height = 16 * 20 # 字体大小 这里设置成16号字体,但是我没有理解*20操作
c_font.colour_index = 0x0B # 这里颜色并不是我们平时所见的rgb,跳转到colour_index选择其他颜色就可以
style.font = c_font # 我的理解:将修改后的字体对象赋值给总的样式
# 对齐方式的设置
return style
主函数中的代码:
write_data()函数中,如果需要设置样式,则传参时加入style1;如果不需要,则删除,系统有默认的样式,看个人需求。
if __name__ == '__main__':
wb, ws = create_excel()
style1=change_style()
write_data(wb, ws,style1)
file = "abc.xls"
read_data(file)