+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-03(62)

2020-04(60)

2020-05(24)

2020-06(39)

2020-07(23)

Python中对 Excel 的相关详细操作(读取、写入、指定行、指定列、新增sheet工作表)

发布于2020-04-23 09:19     阅读(1092)     评论(0)     点赞(29)     收藏(0)


0

1

2

3

4

5

工作中用到这点,就简单的整理了一下

目录

一、准备cateContent.xlsx工作簿

二、Python中关于Excel表格常用操作总结:

2.1  读取相关的操作

2.2  写入的相关操作:

三、读取Excel工作簿中对应工作表的信息(简单抽取)

四、写入操作:从一个表中读取内容的同时写入到另一个新表中

4.1  具体的写入操作

4.2  向新文件中执行写入操作:

五、向原有的工作簿中新增一个新的sheet工作表:

5.1 新增sheet工作表方法一(使用 xlutils.copy 模块)

5.2  新增sheet工作表方法二( 使用openpyxl 模块)


一、准备cateContent.xlsx工作簿

工作簿中已有两个工作表如下:

工作表一:(关于一个美食的相关内容)

工作表二:(成绩表)

二、Python中关于Excel表格常用操作总结:

2.1  读取相关的操作

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-21 16:27
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : readexcel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import xlrd
  12. '''打开要读取的excel表格'''
  13. xl = xlrd.open_workbook('./cateContent.xlsx')
  14. '''通过索引获取要操作的工作表'''
  15. table = xl.sheets()[0]
  16. print('获取到的工作表名称为:%s' % table)
  17. '''获取共有的行数'''
  18. rows = table.nrows
  19. print('Sheet1工作表中共有< %d >行数据' % rows)
  20. '''获取指定行的内容,从索引为0处开始(第0行对应的内容就是每一列的标题)'''
  21. row = table.row_values(0)
  22. print(row)
  23. '''获取指定列的整列内容'''
  24. col = table.col_values(1)
  25. print(col)
  26. '''获取指定单元格的值(索引从0开始,获取第几行第几列对应坐标所在单元格中的值)'''
  27. content = table.cell(4, 0).value
  28. print(content)

2.2  写入的相关操作:

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-21 16:32
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : write_excel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import xlsxwriter
  12. '''创建excel文件'''
  13. xl = xlsxwriter.Workbook('./write_excel.xlsx')
  14. '''添加工作表'''
  15. sheet = xl.add_worksheet('新表')
  16. '''向单元格cell中添加数据,写入索引(标题)'''
  17. sheet.write_string(0, 0, 'user_name')
  18. '''将内容写入到指定的单元格'''
  19. sheet.write_string('B1', 'comment')
  20. '''设置单元格宽度(列宽)大小'''
  21. sheet.set_column('A:B', 30)

三、读取Excel工作簿中对应工作表的信息(简单抽取)

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-21 16:27
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : readexcel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import xlrd
  12. '''
  13. 读取Excel中对应工作表中的信息
  14. file_path: 要读取的工作簿文件的路径
  15. sheet_index: 工作簿中对应的工作表索引,从 0 开始
  16. '''
  17. def read_excel_data(file_path, sheet_index):
  18. '''空列表用来存放后面读取到的内容'''
  19. table_content = []
  20. '''打开要操作的工作簿'''
  21. xl = xlrd.open_workbook(file_path)
  22. '''通过索引获取要操作的工作表'''
  23. table = xl.sheets()[sheet_index]
  24. '''循环取出工作表中对应行的内容'''
  25. for i in range(0, table.nrows):
  26. '''根据索引取出对应行的内容'''
  27. row_content = table.row_values(i)
  28. '''将读取到的信息添加到列表中'''
  29. table_content.append(row_content)
  30. return table_content
  31. print(read_excel_data('./cateContent.xlsx', 1))

执行结果:

四、写入操作:从一个表中读取内容的同时写入到另一个新表中

4.1  具体的写入操作

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-21 16:32
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : write_excel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import xlsxwriter, readexcel
  12. '''
  13. 向表中写入操作
  14. new_table: 要写入内容的新的工作表
  15. datas: 要写入的内容列表
  16. '''
  17. def write_sheet(new_table, datas):
  18. '''循环取出内容列表中的元素对应的信息'''
  19. for i in range(len(datas)):
  20. '''通过索引取出对应的信息'''
  21. row_content = datas[i]
  22. print(row_content)
  23. '''循环取出列表中每个元素中子元素的内容,用于后面写入到指定的单元格中'''
  24. for j in range(len(row_content)):
  25. '''将取出的子元素写入到指定的单元格中(i: 第几行, j: 第几列)'''
  26. new_table.write(i, j, row_content[j])
  27. print(i, j, row_content[j])

4.2  向新文件中执行写入操作:

第一步:创建新的Excel文件

第二步:调用readexcel.py文件中的读取操作

第三步:调用具体的写入操作

  1. '''
  2. 将数据写入到excel文件
  3. file_path: 要进行写入操作的工作表文件所在路径
  4. sheet_name: 要写入新内容的新的工作表名字
  5. '''
  6. def write_excel_data(file_path, sheet_name):
  7. ''' 创建工作簿 '''
  8. xl = xlsxwriter.Workbook(file_path)
  9. ''' 创建工作表 '''
  10. table = xl.add_worksheet(sheet_name)
  11. ''' 读取另一个源表中的数据 '''
  12. datas = readexcel.read_excel_data('./cateContent.xlsx', 1)
  13. '''调用具体的写入操作'''
  14. write_sheet(table, datas)
  15. '''关闭工作表'''
  16. xl.close()
  17. write_excel_data('./write_excel.xlsx', '成绩表')

五、向原有的工作簿中新增一个新的sheet工作表:

提示:如果使用 xlutils.copy 模块进行新增sheet工作表操作的话,原有的文件的格式是 .xlsx 扩展名,执行操作后的文件会报一下的错误

进入到copy的文件内会看到如下内容:

到这里应该明白是什么情况了

5.1 新增sheet工作表方法一(使用 xlutils.copy 模块

先看下原有的工作簿中有几个工作表:

具体操作:

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-22 22:38
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : copyExcel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import xlrd
  12. from xlutils.copy import copy as xg_copy
  13. '''打开要新增sheet工作表的工作簿'''
  14. xl = xlrd.open_workbook('write_excel.xls')
  15. '''可以查看原有工作簿中有几个工作表'''
  16. print(xl.sheets())
  17. '''
  18. copy源工作簿
  19. 这一步的操作就是将源工作簿连同里面的内容信息完整的复制出来一份
  20. '''
  21. new_table = xg_copy(xl)
  22. '''执行新增sheet工作表操作'''
  23. new_table.add_sheet('新增工作表')
  24. new_table.save('write_excel.xls')

再次查看是否新增成功:

5.2  新增sheet工作表方法二( 使用openpyxl 模块)

  1. """
  2. -*- coding:utf-8 -*-
  3. Group : Sirius
  4. Author : xiao66guo
  5. Time : 2020-04-21 22:59
  6. Software : PyCharm
  7. ProjectName : ReadExcel
  8. FileName : indexExcel.py
  9. E-mail : XXXXXX@163.com
  10. """
  11. import openpyxl
  12. '''打开要新增sheet工作表的工作簿'''
  13. xl = openpyxl.load_workbook('cateContent.xlsx')
  14. '''向指定索引位置新增sheet工作表'''
  15. xl.create_sheet(title='娃哈哈', index=1)
  16. xl.save('cateContent.xlsx')

这次使用的是事先准备的 cateContent.xlsx 工作簿,执行后进行查看验证:

 

 

原文链接:https://blog.csdn.net/xiao66guo/article/details/105686645

0

1

2

3

4

5

6



所属网站分类: 技术文章 > 博客

作者:9384vfnv

链接: https://www.pythonheidong.com/blog/article/339407/9be1bf472c3138059f0e/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)