Excel日期转换为Python再回到Excel

2 投票
2 回答
1039 浏览
提问于 2025-04-18 10:25

我正在使用Python提取数据。我创建了一个二维数组,里面存放的是Excel表格的数据,现在我想找到某个特定日期的位置。不过,当我从这个二维数组中打印出一个日期时,结果是<PyTime: 7/9/2014 12:00:00 AM>,而在Excel里显示的是07/09/14。而且当我检查数据类型时,它显示的是时间类型。假设我的数组叫2darray

我想用2darray.index(object)来找到日期的位置,但我不知道该在参数里放什么。因为我刚开始用Python提取Excel数据,所以如果有人能帮我解决这个问题,我会非常感激。

2 个回答

0

你好,你可以使用win32com来完成这个操作。你需要先把你的Python列表中的日期格式整理一下,比如:

Import win32com.client
xl = win32com.client.Dispatch('Excel.Application')
wbxl = xl.Workbooks.Open('D:/myworkbooks.xlsx')
xlsheet = wbxl.ActiveSheet

mydatelist = []
for row in range(0,50]:
    mydatelist.append(str(xlsheet.Cells(row,1).Value))
    mydatelist = [word.replace('12:00:00 AM','') for word in mydatelist]

然后你可以在之后这样做:

import time
date = []
for x in mydatelist :
date.append(time.strptime(x, '%Y/%m/%d '))
0

假设你的日期是 <PyTime: 7/9/2014 12:00:00 AM>,并且这个日期存储在一个叫 my_date 的变量里。你可以通过以下方式把它转换成Python的原生日期时间对象:

import datetime as dt
dt.datetime(month=my_date.month, day=my_date.day, year=my_date.year,
            hour=my_date.hour, minute=my_date.minute, second=my_date.second)

不过,你可以试试我的库 xlwings,这样你可以直接做:

from xlwings import Range, Workbook
wb = Workbook(r'path\to\your\workbook.xlsx')
my_date = Range('A1').value  # prints: datetime.datetime(2014, 9, 7, 12, 0)

这样,它会自动给你一个Python的 datetime 对象,这个对象提供了你需要的所有方法,方便你进行各种操作。

撰写回答