python - 从excel中读取日期作为字符串Python

标签 python excel

我知道这已被问过几次,但即使我尝试了许多给定的答案,我也无法完全弄清楚我的问题。我正在尝试读取表示为日期的 Excel 单元格,但是当它使用 Python 导入我的程序时,它表示为浮点数。

我的 excel 电子表格中的第四列(即 index=3)包含我试图从浮点数转换为字符串的所有日期。我只是将所有值添加到列表中以对整行执行某些操作,然后将其清除并移至下一行。

我的代码基于以下答案:https://stackoverflow.com/a/13962976/3480297

这是我正在使用的示例数据(文件):

enter image description here

import xlrd

workbook = xlrd.open_workbook(file)
worksheet = workbook.sheet_by_name('Sheet1')

num_rows = worksheet.nrows
num_cols = worksheet.ncols
values = []

i = 0
j = 0

while i < num_rows:
    while j < num_cols:
        if j == 3:
            values.append(xlrd.xldate_as_tuple(str(worksheet.cell_value(i, j)), 0))
        else:
            values.append(worksheet.cell_value(i, j))
        j += 1
    j = 0
    i += 1
    values = []

但是,我上面的代码在 print(xlrd.xldate_as_tuple(str(worksheet.cell_value(i, j)), 0)) 处给了我以下错误我不知道为什么。

TypeError: '<' not supported between instances of 'str' and 'float'



编辑:

调试后,代码抛出错误 where worksheet.cell_value(i, j) = 43588.0

EDIT2:

我删除了围绕日期的 str(...) 强制转换以包括:values.append(xlrd.xldate_as_tuple(worksheet.cell_value(i, j)), workbook.datemode)但这会引发错误:

TypeError: xldate_as_tuple() missing 1 required positional argument: 'datemode'

最佳答案

我认为您不应该将日期转换为字符串。注意我做了一些其他的改变:

  • 用于 for 循环而不是 while 循环
  • 请不要使用单字母 var 名称(如 ij )
  • xldate_as_datetimexldate_as_tuple 更有意义

  • 请注意,如果您希望以特定格式显示日期,请尝试 strftime
    import xlrd
    
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_name('Sheet1')
    
    num_rows = worksheet.nrows
    num_cols = worksheet.ncols
    values = []
    
    for row in range(1, num_rows):
        row_values = []
        for col in range(num_cols):
            if col == 3:
                datetime_ = xldate.xldate_as_datetime(worksheet.cell_value(row, col), workbook.datemode)
                row_values.append(datetime_)
            else:
                row_values.append(worksheet.cell_value(row, col))
        values.append(row_values)
    

    关于python - 从excel中读取日期作为字符串Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506776/

    相关文章:

    python - 嵌套查询/在 Pandas 中有效地比较多个数据集

    python - 如何从命令行运行不同的python函数

    python - pymongo - 搜索包含 $ 和运算符的文档集合,不区分大小写

    JavaFX 动态添加行和列到 TableView

    excel - VBA 如果选择了特定的列和行,则类型不匹配错误

    c# - Excel-DNA 将自定义数据保存到工作表(不是单元格)

    python - sklearn 将多个分类列的标签编码器序列化到磁盘

    python - Unicode编码错误: 'latin-1' codec can't encode when trying to write hebrew to a PDF

    excel - VBA 函数返回到赋值语句上的调用例程

    java - 使用Apache POI写入Excel文件,但FileOutput仅包含一列