大家好,又见面了,我是你们的朋友全栈君。
(1)方法一:
#!/usr/bin/env python3from datetime import datefrom xlrd import open_workbook,xldate_as_tuplefrom xlwt import Workbookoutput_workbook=Workbook()output_worksheet=output_workbook.add_sheet('january_2017_repair')with open_workbook('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sales_2017.xlsx') as workbook: worksheet=workbook.sheet_by_name('january_2013') for row_index in range(worksheet.nrows): for col_index in range(worksheet.ncols): #判断单元格里的值是否是日期 if worksheet.cell_type(row_index,col_index)==3: #先将单元格里的表示日期数值转换成元组 date_cell=xldate_as_tuple(worksheet.cell_value(row_index,col_index),workbook.datemode) #使用元组的索引来引用元组的前三个元素并将它们作为参数传递给date函数来转换成date对象,用strftime()函数来将date对象转换成特定格式的字符串 date_cell=date(*date_cell[:3]).strftime('%Y/%m/%d') #将格式化的日期填充到原来的表示日期的数值的位置 output_worksheet.write(row_index,col_index,date_cell) else: #将sheet中非表示日期的值赋给non_date_celld对象 non_date_cell=worksheet.cell_value(row_index,col_index) #将sheet中非表示日期的值位置填充到相应位置 output_worksheet.write(row_index,col_index,non_date_cell)output_workbook.save('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sale_january_format_2017.xlsx')
这个方法比较直接,要考虑的问题是日期的格式化处理
(2)方法二:
#!/usr/bin/env python3import pandas as pd#读取工作簿和工作簿中的工作表data_frame=pd.read_excel('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sales_2017.xlsx',sheet_name='january_2013')#新建一个工作簿writer=pd.ExcelWriter('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sale_january_2017_in_pandas.xlsx')#使用to_excel将之前读取的工作簿中工作表的数据写入到新建的工作簿的工作表中data_frame.to_excel(writer,sheet_name='jan_2017_output_sheet',index=False)#保存并且关闭工作簿writer.save()
(3)方法三:
#!/usr/bin/env python3import pandas as pd#读取工作簿和工作簿中的工作表writer_1=pd.ExcelFile('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sales_2017.xlsx')data_frame= writer_1.parse('january_2013')#新建一个工作簿writer=pd.ExcelWriter('E:\\研究生学习\\python数据\\实验数据\\Excel文件实验数据\\sale_january_2017_in_pandas.xlsx')#使用to_excel将之前读取的工作簿中工作表的数据写入到新建的工作簿的工作表中data_frame.to_excel(writer,sheet_name='jan_2017_output_sheet',index=False)#保存并且关闭工作簿writer.save()
后两种方法用的是pandas,这样可以大大节省时间,提高效率。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186770.html原文链接:https://javaforall.cn