python对excel文件的处理
2021/5/23 22:28:50
本文主要是介绍python对excel文件的处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
python处理excel文件有很多方法,最开始接触的是xlrd、xlsxwriter模块,分别用于excel文件的读、写。后来又学习了openpyxl模块,可以同时完成excel文件的读、写。再后来,接触了大牛pandas,这是python中专门用于数据分析的模块,有更加强大的功能。
本文尝试梳理一下这几个方法,以实际案例来对比各种方法的优劣。
1. xlrd、xlsxwriter模块
import xlrd #读取excel文件 import xlsxwriter #写入excel文件
file_name = r'C:/2020/python-exer/excel_doc/time_fmt.xls' #存在一个excel文件,用于读 file_name1 = r'C:/2020/python-exer/excel_doc/time_fmt_output.xls' #新建一个excel文件,用于写
# 读取excel文件,按行读取数据,每行数据对应一个列表元素
def excel_lines(): wb = xlrd.open_workbook(file_name) # 打开Excel文件 sheet1 = wb.sheet_by_name('Sheet1') # 通过excel表格sheet名称获取工作表 dat = [] # 创建空list Max_lines = sheet1.nrows # sheet1数据最大行数,即便每列元素不同。 print(Max_lines) for a in range(Max_lines): cells = sheet1.row_values(a) # 每行数据赋值给cells dat.append(cells) return dat
#>>>[['序号', '时间格式定义'], [1.0, '%a Locale’s abbreviated weekday name. '], [2.0, '%A Locale’s full weekday name. '], …… 从输出内容看出,得到的是一个嵌套list,每行数据对应着一个list元素。
# 读取excel文件,按列读取数据,每列数据对应一个列表元素
def excel_cols(): wb = xlrd.open_workbook(file_name) # 1 打开Excel文件,按照名字获取第一个工作表 # sheet1 = wb.sheet_by_name('Sheet1') # 通过excel表格sheet名称获取工作表 # 2 Excel的所有sheet是个列表,通过索引获取第一个工作表 sheet1 = wb.sheets()[0] # 3 通过索引获取第一个工作表,这种方法有明显优势,不需要知道excel的sheet名称。与#3方法相同 # 最大的优势能用for循环,遍历所有的sheet。 # sheet1 = wb.sheet_by_index(0) # sheet_2= wb.sheets()[1] # print(sheet_2.col_values(0)) dat = [] # 创建空list global Max_rows Max_cols = sheet1.ncols # sheet1数据最大列数 Max_rows = sheet1.nrows # sheet1数据最大行数 print("Max_rows:", Max_rows) print("Max_cols:", Max_cols) for a in range(Max_cols): cells = sheet1.col_values(a) # 每列数据赋值给cells dat.append(cells) # 每列数据追加到列表dat,那么dat就是以列数据为元素的列表 return dat
#>>> [['序号', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, '', ''], ['时间格式定义', '%a Locale’s abbreviated weekday name. ', …… 从上面的输出结果看,按照excel文件的列读取数据,生成嵌套list,每一列对应一个list元素 #写入excel文件,新建sheet用于保存数据
workbook_w = xlsxwriter.Workbook(file_name1) sheet2 = workbook_w.add_worksheet("output_sheet")
for i in range(Max_rows): # 因列名单独处理了,所以真正的列元素数要比总数-1 # strf_time = time.strftime(excel_cols[i]) # 调用时间模块函数,参数为每列的值 # comment = excel_cols_comment[i] if i == 0: # 每个列的第一行,列名。i代表行号,如果是很多列,也可以再增加j循环,表示列号 sheet2.write(i, 0, f"格式化时间参数:time.strftime") sheet2.write(i, 1, f"执行结果") sheet2.write(i, 2, f"注释") else: # 每个数据列,从第二行开始循环写入 ##下面的i-1,原因在于i是人为的把列头编写输出。而对于列表元素来说,索引从0开始。 strf_time = time.strftime(excel_cols[i - 1]) # 调用时间模块函数,参数为每列的值 comment = excel_cols_comment[i - 1] sheet2.write(i, 0, f"({repr(excel_cols[i - 1])})") # 注意这里的i-1,前面的i与excel表格相关,后面的i-1是因为列的元素还是从0开始。 sheet2.write(i, 1, f"{strf_time}") sheet2.write(i, 2, f"{comment}") workbook_w.close()
以上的程序,实际的关键点在于sheet.write函数的参数处理,第一个参数 2.openpyxl模块,既可以读、也可以写
这篇关于python对excel文件的处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享
- 2024-11-06Python 基础编程入门教程
- 2024-11-05Python编程基础:变量与类型
- 2024-11-05Python编程基础:变量与类型
- 2024-11-04Python编程基础:变量与类型
- 2024-11-04Python编程基础
- 2024-11-04Python编程基础入门指南
- 2024-11-02Python编程基础
- 2024-11-01Python 基础教程
- 2024-11-01用Python探索可解与不可解方程的问题