当前位置:   article > 正文

【4】python读写文件操作---详细讲解!_workbook.save(path)

workbook.save(path)

相关文章:

全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!

【1】windows系统如何安装后缀是whl的python库

【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)

【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)

【4】python读写文件操作---详细讲解!

【5】数据可视化pygal,画出美观的图表

python读写文件详细讲解!

1.操作xls格式的表格文件:

读取:xlrd

写入:xlwt

修改(追加写入):xlutils

2.操作xlsx格式的表格文件:

读取/写入:openpyxl

一. 读取Excel

1. 导入读取库

import xlrd

2. 打开Excel文件读取数据

data = xlrd.open_workbook('xxx.xls')

3. 获取一个工作表

  1. table = data.sheets()[0] #通过索引顺序获取
  2. table = data.sheet_by_index(0) #通过索引顺序获取
  3. table = data.sheet_by_name(u'Sheet1')#通过名称获取

4. 获取整行和整列的值(数组)

  1. print (table.row_values(0))
  2. print (table.col_values(0))

5. 获取行数和列数

  1. nrows = table.nrows
  2. ncols = table.ncols
  3. print(nrows)
  4. print(ncols)

6. 循环行列表数据

  1. for i in range(nrows):
  2. print(table.row_values(i))

7. 单元格

  1. #单元格: 第几行,第几列
  2. cell_A1 = table.cell(0, 0).value
  3. cell_C4 = table.cell(3, 2).value
  4. print(cell_A1)
  5. print(cell_C4)

8. 使用行列索引

  1. #使用行列索引
  2. cell_A1 = table.row(0)[0].value
  3. cell_B2 = table.col(1)[0].value
  4. print(cell_A1)
  5. print(cell_B2)

二. 导出Excel 

  1. from openpyxl import Workbook
  2. wb = Workbook()
  3. # 创建一个工作簿
  4. ws1 = wb.active
  5. # 至少建立一个工作表
  6. ws = wb.create_sheet("mySheet", 0)
  7. ws1.title = "New Title"
  8. # 设置表的名字
  9. ws.sheet_properties.tabColor = "1072BA"
  10. # 改变表选项卡的颜色
  11. ws["A4"] = 4
  12. ws.cell(row=1, column=1, value=1)
  13. # 两种修改表格内容的方法, cell的方法暂时还弄不懂它第一个参数的意义。
  14. print(ws["A2"].value)
  15. # 访问A列2行的值,得到cell直接访问它的value属性,就是目标表格的值。
  16. wb.save("sample.xlsx")
  17. # 保存

xls格式的表格文件:

  1. # coding=UTF-8
  2. import xlrd
  3. import xlwt
  4. from xlutils.copy import copy
  5. def write_excel_xls(path, sheet_name, value):
  6. index = len(value) # 获取需要写入数据的行数
  7. workbook = xlwt.Workbook() # 新建一个工作簿
  8. sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格
  9. for i in range(0, index):
  10. for j in range(0, len(value[i])):
  11. sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列)
  12. workbook.save(path) # 保存工作簿
  13. print("xls格式表格写入数据成功!")
  14. def write_excel_xls_append(path, value):
  15. index = len(value) # 获取需要写入数据的行数
  16. workbook = xlrd.open_workbook(path) # 打开工作簿
  17. sheets = workbook.sheet_names() # 获取工作簿中的所有表格
  18. worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
  19. rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
  20. new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
  21. new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
  22. for i in range(0, index):
  23. for j in range(0, len(value[i])):
  24. new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入
  25. new_workbook.save(path) # 保存工作簿
  26. print("xls格式表格【追加】写入数据成功!")
  27. def read_excel_xls(path):
  28. workbook = xlrd.open_workbook(path) # 打开工作簿
  29. sheets = workbook.sheet_names() # 获取工作簿中的所有表格
  30. worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
  31. for i in range(0, worksheet.nrows):
  32. for j in range(0, worksheet.ncols):
  33. print(worksheet.cell_value(i, j), "\t", end="") # 逐行逐列读取数据
  34. print()
  35. book_name_xls = 'xls格式测试工作簿.xls'
  36. sheet_name_xls = 'xls格式测试表'
  37. value_title = [["姓名", "性别", "年龄", "城市", "职业"],]
  38. value1 = [["张三", "男", "19", "杭州", "研发工程师"],
  39. ["李四", "男", "22", "北京", "医生"],
  40. ["王五", "女", "33", "珠海", "出租车司机"],]
  41. value2 = [["Tom", "男", "21", "西安", "测试工程师"],
  42. ["Jones", "女", "34", "上海", "产品经理"],
  43. ["Cat", "女", "56", "上海", "教师"],]
  44. write_excel_xls(book_name_xls, sheet_name_xls, value_title)
  45. write_excel_xls_append(book_name_xls, value1)
  46. write_excel_xls_append(book_name_xls, value2)
  47. read_excel_xls(book_name_xls)

xlsx格式的表格文件:

  1. # coding=UTF-8
  2. import openpyxl
  3. def write_excel_xlsx(path, sheet_name, value):
  4. index = len(value)
  5. workbook = openpyxl.Workbook()
  6. sheet = workbook.active
  7. sheet.title = sheet_name
  8. for i in range(0, index):
  9. for j in range(0, len(value[i])):
  10. sheet.cell(row=i+1, column=j+1, value=str(value[i][j]))
  11. workbook.save(path)
  12. print("xlsx格式表格写入数据成功!")
  13. def read_excel_xlsx(path, sheet_name):
  14. workbook = openpyxl.load_workbook(path)
  15. # sheet = wb.get_sheet_by_name(sheet_name)这种方式已经弃用,不建议使用
  16. sheet = workbook[sheet_name]
  17. for row in sheet.rows:
  18. for cell in row:
  19. print(cell.value, "\t", end="")
  20. print()
  21. book_name_xlsx = 'xlsx格式测试工作簿.xlsx'
  22. sheet_name_xlsx = 'xlsx格式测试表'
  23. value3 = [["姓名", "性别", "年龄", "城市", "职业"],
  24. ["111", "女", "66", "石家庄", "运维工程师"],
  25. ["222", "男", "55", "南京", "饭店老板"],
  26. ["333", "女", "27", "苏州", "保安"],]
  27. write_excel_xlsx(book_name_xlsx, sheet_name_xlsx, value3)
  28. read_excel_xlsx(book_name_xlsx, sheet_name_xlsx)

运行结果:

相关总结:

1.xlwt 写入xls文件内容

  1. import xlwt
  2. book = xlwt.Workbook() # 新建工作簿
  3. table = book.add_sheet('Over',cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖
  4. sheet = book.add_sheet('Test') # 添加工作页
  5. sheet.write(1,1,'A') # 行,列,属性值 (1,1)为B2元素,从0开始计数
  6. style = xlwt.XFStyle() # 新建样式
  7. font = xlwt.Font() #新建字体
  8. font.name = 'Times New Roman'
  9. font.bold = True
  10. style.font = font # 将style的字体设置为font
  11. table.write(0,0,'Test',style)
  12. book.save(filename_or_stream='excel_test.xls') # 一定要保存

2.xlrd读取xls文件内容

  1. import xlrd
  2. data = xlrd.open_workbook('excel_test.xls')
  3. print(data.sheet_names()) # 输出所有页的名称
  4. table = data.sheets()[0] # 获取第一页
  5. table = data.sheet_by_index(0) # 通过索引获得第一页
  6. table = data.sheet_by_name('Over') # 通过名称来获取指定页
  7. nrows = table.nrows # 为行数,整形
  8. ncolumns = table.ncols # 为列数,整形
  9. print(type(nrows))
  10. print(table.row_values(0))# 输出第一行值 为一个列表
  11. # 遍历输出所有行值
  12. for row in range(nrows):
  13. print(table.row_values(row))
  14. # 输出某一个单元格值
  15. print(table.cell(0,0).value)
  16. print(table.row(0)[0].value)

3.综合使用python-excel三大模块完成Excel内容追加写入

  1. import xlwt,xlrd
  2. from xlutils.copy import copy
  3. data = xlrd.open_workbook('excel_test.xls',formatting_info=True)
  4. excel = copy(wb=data) # 完成xlrd对象向xlwt对象转换
  5. excel_table = excel.get_sheet(0) # 获得要操作的页
  6. table = data.sheets()[0]
  7. nrows = table.nrows # 获得行数
  8. ncols = table.ncols # 获得列数
  9. values = ["E","X","C","E","L"] # 需要写入的值
  10. for value in values:
  11. excel_table.write(nrows,1,value) # 因为单元格从0开始算,所以row不需要加一
  12. nrows = nrows+1
  13. excel.save('excel_test.xls')

4.使用openpyxl写xlsx文件

  1. import openpyxl
  2. data = openpyxl.Workbook() # 新建工作簿
  3. data.create_sheet('Sheet1') # 添加页
  4. #table = data.get_sheet_by_name('Sheet1') # 获得指定名称页
  5. table = data.active # 获得当前活跃的工作页,默认为第一个工作页
  6. table.cell(1,1,'Test') # 行,列,值 这里是从1开始计数的
  7. data.save('excel_test.xlsx') # 一定要保存

5.使用openpyxl读取xlsx文件

  1. import openpyxl
  2. data = openpyxl.load_workbook('excel_test.xlsx') # 读取xlsx文件
  3. table = data.get_sheet_by_name('Sheet') # 获得指定名称的页
  4. nrows = table.rows # 获得行数 类型为迭代器
  5. ncols = table.columns # 获得列数 类型为迭代器
  6. print(type(nrows))
  7. for row in nrows:
  8. print(row) # 包含了页名,cell,值
  9. line = [col.value for col in row] # 取值
  10. print(line)
  11. # 读取单元格
  12. print(table.cell(1,1).value)

6.综合使用openpyxl对Excel内容追加写入

  1. import openpyxl
  2. data = openpyxl.load_workbook('excel_test.xlsx')
  3. print(data.get_named_ranges()) # 输出工作页索引范围
  4. print(data.get_sheet_names()) # 输出所有工作页的名称
  5. # 取第一张表
  6. sheetnames = data.get_sheet_names()
  7. table = data.get_sheet_by_name(sheetnames[0])
  8. table = data.active
  9. print(table.title) # 输出表名
  10. nrows = table.max_row # 获得行数
  11. ncolumns = table.max_column # 获得行数
  12. values = ['E','X','C','E','L']
  13. for value in values:
  14. table.cell(nrows+1,1).value = value
  15. nrows = nrows + 1
  16. data.save('excel_test.xlsx')

7.XlsxWriter

  1. # !/usr/bin/python
  2. # coding:utf-8
  3. # xlsxwriter的基本用法
  4. import xlsxwriter
  5. # 1. 创建一个Excel文件
  6. workbook = xlsxwriter.Workbook('demo1.xlsx')
  7. # 2. 创建一个工作表sheet对象
  8. worksheet = workbook.add_worksheet()
  9. # 3. 设定第一列(A)宽度为20像素
  10. worksheet.set_column('A:A',20)
  11. # 4. 定义一个加粗的格式对象
  12. bold = workbook.add_format({'bold':True})
  13. # 5. 向单元格写入数据
  14. # 5.1 向A1单元格写入'Hello'
  15. worksheet.write('A1','Hello')
  16. # 5.2 向A2单元格写入'World'并使用bold加粗格式
  17. worksheet.write('A2','World',bold)
  18. # 5.3 向B2单元格写入中文并使用加粗格式
  19. worksheet.write('B2',u'中文字符',bold)
  20. # 5.4 用行列表示法(行列索引都从0开始)向第2行、第0列(即A3单元格)和第3行、第0列(即A4单元格)写入数字
  21. worksheet.write(2,0,10)
  22. worksheet.write(3,0,20)
  23. # 5.5 求A3、A4单元格的和并写入A5单元格,由此可见可以直接使用公式
  24. worksheet.write(4,0,'=SUM(A3:A4)')
  25. # 5.6 在B5单元格插入图片
  26. worksheet.insert_image('B5','./demo.png')
  27. # 5.7 关闭并保存文件
  28. workbook.close()

参考链接:https://blog.csdn.net/qq_40676033/article/details/86555425?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号