You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular中解析Excel文件的日期与Float数据类型?

Excel单元格数据类型解析问题解决方案

日期类型被识别为数字的解决方法

Excel的日期本质是从1899-12-30(部分库以1900-01-01为起点)开始计数的序列化数字,直接读取单元格值会拿到这类数字,需结合单元格格式判断并转换:

  • 使用openpyxl的示例代码:
    from openpyxl import load_workbook
    from datetime import datetime, timedelta
    
    wb = load_workbook("demo.xlsx")
    ws = wb.active
    
    for row in ws.iter_rows(values_only=False):
        for cell in row:
            # 匹配常见日期格式,可根据实际需求补充
            if cell.number_format in ('DD-MM-YYYY', 'YYYY-MM-DD', 'MM/DD/YYYY') or 'date' in cell.number_format.lower():
                # 转换序列化数字为日期
                date_val = datetime(1899, 12, 30) + timedelta(days=cell.value)
                print(f"日期类型: {date_val.strftime('%d-%m-%Y')}")
    
  • 使用pandas的简化处理:
    import pandas as pd
    
    # 读取时自动解析日期
    df = pd.read_excel("demo.xlsx", parse_dates=True)
    # 或针对指定列手动转换
    df['目标日期列'] = pd.to_datetime(df['目标日期列'], unit='D', origin='1899-12-30')
    

浮点数与整数类型区分方法

Python中int和float同属数值类型,但可通过返回值的原生类型严格区分:

  • 以openpyxl为例(values_only=True会直接返回Python原生类型):
    from openpyxl import load_workbook
    
    wb = load_workbook("demo.xlsx", data_only=True)
    ws = wb.active
    
    for row in ws.iter_rows(values_only=True):
        for val in row:
            if isinstance(val, int):
                print("整数类型")
            elif isinstance(val, float):
                print("浮点数类型")
    
  • 注意:若Excel单元格是文本格式存储的小数,需先通过float(val)转换后再判断类型。

关键提示

判断数据类型时,需结合单元格格式设置和返回值的原生类型双重校验,避免仅靠值判断导致的误判;不同Excel处理库(如xlrd、openpyxl)的细节逻辑有差异,需根据使用的库调整代码。

内容的提问来源于stack exchange,提问作者lowkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:15:34