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

Python读取Excel自定义货币格式时保留原格式的问题

解决pandas读取xls时保留自定义货币格式的问题

问题核心:pd.read_excel默认读取的是单元格的底层数值,而非Excel界面显示的格式化文本,因此设置dtype={'Price':str}无法保留带货币符号的格式。下面是可行的解决方案:

依赖准备

安装支持xls格式的旧版xlrd(2.0+版本不再支持xls):

pip install xlrd==1.2.0

单个xls文件读取函数

通过xlrd直接读取单元格的格式化显示文本,而非原始数值:

import xlrd
import pandas as pd

def read_xls_formatted_price(file_path):
    # 打开xls文件并保留格式信息
    workbook = xlrd.open_workbook(file_path, formatting_info=True)
    sheet = workbook.sheet_by_index(0)  # 读取第一个工作表,可根据需求修改
    
    # 提取表头
    headers = [sheet.cell_value(0, col) for col in range(sheet.ncols)]
    
    # 逐行读取数据
    data_rows = []
    for row_num in range(1, sheet.nrows):
        current_row = []
        for col_num in range(sheet.ncols):
            cell = sheet.cell(row_num, col_num)
            # 针对Price列提取格式化文本
            if headers[col_num] == 'Price':
                # 获取单元格的格式规则
                xf = workbook.xf_list[cell.xf_index]
                fmt_str = workbook.format_map[xf.format_key].format_str
                # 按Excel格式渲染单元格内容
                formatted_text = xlrd.formatting.format_cell(cell, fmt_str, workbook.datemode)
                current_row.append(formatted_text)
            else:
                # 其他列正常读取值
                current_row.append(cell.value)
        data_rows.append(current_row)
    
    # 转换为DataFrame
    return pd.DataFrame(data_rows, columns=headers)

批量合并多个xls文件

结合glob遍历目标文件,批量读取并合并:

import glob

# 替换为你的xls文件路径匹配规则(比如'./data/*.xls')
target_files = glob.glob('*.xls')

# 初始化合并后的空DataFrame
merged_result = pd.DataFrame()

# 逐个读取并合并
for file in target_files:
    single_df = read_xls_formatted_price(file)
    merged_result = pd.concat([merged_result, single_df], ignore_index=True)

# 验证Price列格式
print(merged_result['Price'])

注意事项

  • 确保表头中的Price列名称完全匹配(大小写、空格都要一致),否则无法触发格式提取逻辑
  • 如果需要读取多个工作表,可修改sheet_by_index或改用sheet_by_name指定目标表
  • 若文件是xlsx格式,可改用openpyxl库,通过cell.number_format配合locale模块实现格式渲染(但本次需求针对xls,故优先xlrd方案)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:31:47