#python #excel #vba #date #time
#python #excel #vba #Дата #время
Вопрос:
Я работаю с python и извлекаю из него данные. Я создал 2d-массив таблицы Excel и пытаюсь найти индекс определенной даты. Однако, когда я печатаю одну из дат из моего 2d-массива, она печатается, <PyTime: 7/9/2014 12:00:00 AM>
пока она есть в Excel 07/09/14
. Он также выводит время ввода, когда я проверяю тип. Предположим, что у моего массива есть имя 2darray
.
Я пытаюсь использовать 2darray.index(object)
, но я не знаю, что вставить в параметр. Может кто-нибудь помочь с этой проблемой? Я новичок в использовании Python для извлечения данных из Excel, и ваша помощь была бы очень признательна.
Комментарии:
1. Что означает «он печатается, пока в Excel это 07/09/14»? Пожалуйста, покажите нам, какой код вы используете, чтобы мы могли точно видеть, что происходит.
Ответ №1:
Предположим, что ваша дата, которая печатается <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'pathtoyourworkbook.xlsx')
my_date = Range('A1').value # prints: datetime.datetime(2014, 9, 7, 12, 0)
То есть он автоматически предоставляет вам собственный datetime
объект Python, который предлагает вам все необходимые методы для работы.
Ответ №2:
Привет, вы можете выполнить это действие с помощью 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 '))