python读取excel表格,并将读取的输入写入到新的excel表格中

遇到的从excel读取日期时变为浮点数的解决办法

首先回顾一下读取数据以及写入数据。

import xlrd
import xlwt
datas=xlrd.open_workbook('policy.xlsx')		#打开一个名字为【policy.xlsx】的excel文件
table=datas.sheets()[0]						#通过下标取不同的sheet表
#table=datas.sheet_by_name('sheet1')		#或者通过sheet标的名字去选择具体的表
sheet_name=datas.sheet_names()				#找出所有的表名
nrows=table.nrows							#其中一个sheet表中所有的行数
ncols=table.ncols							#其中一个sheet表中所有的列数
#向excel表格写入数据,先打开一个表格,插入数据,最后保存
wb=xlwt.Workbook()							#打开一个excel文件,注意这里的Workbook,第一个W是大写
ws=wb.add_sheet('表格名字')					#新增一个表格,也可以理解为给表格起一个名字

for rownum in range(1,nrows):				#循环取值遍历文件中的最大行数,这里从1开始是为了下方的插入
	row=table.row_values(rownum)			#通过指定行数取出每一行的值
	policy_num=str(row[0])					#第一列信息为保单号
	name=str(row[1])						#第二列信息为姓名
	#birth_date=str(row[3])					#第四列信息为出生日期
#这里出生日期如果使用这个代码,那么将会得到一个字符串,不会显示excel表格中的日期
	birth_date=xlrd.xldate_as_datetime(table.cell(rownum,3).value,0)
	#xlrd.xldate_as_tuple(table.cell(1,3).value,0) 是
#这里直接从excel中的日期直接转化为日期,不过它是这样的。如果你本来的日期是1985/8/24,
#那么birth_date结果为1985-08-24 00:00:00,如果你不想要时分秒,你可以这样做。
	birth_date1=str(birth_date)				#把这个结果转化为字符串
	birth_date2=birth_date1[0:10]			#然后进行切割,就会得到1985-08-24
#接下来进行插入我们上面打开的excel文件中
	ws=write(rownum,0,label=policy_num)
	ws=write(rownum,1,label=name)
	ws=write(rownum,2,label=birth_date2)	#这里rownum是变量,代表行,后面的数字代表列
	ws.col(0).width = 256*20				#给第一列设置宽度,也可以全部写数字如:5120
wb.save('example.xlsx')						#最后进行保存

解决这个问题就是把从excel中读取的日期进行转换,因为它直接得到的是浮点数。
还可以通过列值或者坐标进行取值。

a=table.row_values(0)			#取第一行值
b=table.col_values(0)			#取第一列值
c=table.cell(1,1).value			#取第二行第二列的值

在excel中插入当前时间

使用到了datetime库,并且使用的时候需要先定义好插入的格式。

import xlwt								#引用xlwt库
from datetime import *					#引用datetime中的所有函数
style=xlwt.XFStyle()					#style代表excel中的所有格式
style.num_format_str='YYYY-MM-DD'		#设置style代表的格式为年月日
wb=xlwt.Workbook()
ws=wb.add_sheet('sheetname')
ws.write(0,0,datetime.now(),style)		#在excel中的‘sheetname’表写入当前时间,格式为年月日
wb.save('example2.xlsx')				#保存文件
#打开文件时,写入的内容显示的是######,这是因为单元格太小,拉大就可以显示日期了。

后续再补充~

详细excel单元格样式

发布了8 篇原创文章 · 获赞 3 · 访问量 478

猜你喜欢

转载自blog.csdn.net/qq_45731111/article/details/102472406