0

我正在尝试使用 xlrd 模块从 excel 文件中读取日期。下面是我的代码:

# Variables
myfile = '/home/mobaxterm/.git/Operation_Documentation/docs/Servicing Portal User &  Certificate Inventory.xlsx'
mydate = 'Expiration Date'
row_head = 0

# Import required modules
import xlrd
import datetime


today = datetime.date.today()
book = xlrd.open_workbook(myfile)
sheet = book.sheet_by_index(1)
for col_index in range(sheet.ncols):
        print xlrd.cellname(row_head,col_index),"-",
        print sheet.cell(row_head,col_index).value
        if sheet.cell(row_head,col_index).value == mydate:
                for raw_index in range(sheet.nrows):
                        expire = sheet.cell(raw_index,col_index).value
                        print expire
                        expire_date = datetime.datetime(*xlrd.xldate_as_tuple(expire, book.datemode))    
                        print 'datetime: %s' %  expire_date
                break

运行代码时出现以下错误:

Traceback (most recent call last):
  File "cert_monitor.py", line 31, in <module>
    expire_date = datetime.datetime(*xlrd.xldate_as_tuple(expire, book.datemode))
  File "/usr/lib/python2.6/site-packages/xlrd/xldate.py", line 61, in xldate_as_tuple
    xldays = int(xldate)
ValueError: invalid literal for int() with base 10: 'Expiration Date'

谁能建议这里可能是什么问题?

谢谢你的时间。

4

1 回答 1

1

我相信你应该只跳过标题:

for raw_index in range(1, sheet.nrows):
    ...

您正在检查sheet.cell(row_head,col_index).value == mydate,然后您想遍历行,但您应该row_head先跳过 - 它是==mydate,它不是日期,而是简单的“到期日期”字符串。

于 2013-06-19T15:32:58.013 回答