幸运的星竹 2024-11-15 15:01 采纳率: 88.2%
浏览 76
已结题

openpyxl读取空单元格的值是None怎么转换不成空字符串''

使用openpyxl读取excel表格的数据,遇到单元格空值的,读出来是None, 但使用代码转换成了'',为什么最后输出的还是None.
代码如下:

def get_cell_data(f_path, sheet_name, r_num, c_num):
    sheet = get_sheet(f_path, sheet_name)
    cell = sheet.cell(r_num, c_num)
    cell_data = ''
    # print("be4", cell.value)
    if cell is None:
        cell.value = ''
    print("af", cell.value)
    cell_data = cell.value
    return cell_data

  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-11-15 15:04
    关注

    该回答参考ChatGPT,由吾为汝整理提供如若有用,还请题主采纳!

    在使用 openpyxl 读取 Excel 表格时,空单元格的值确实会返回 None。如果你希望在读取空单元格时返回一个空字符串 '',可以在获取单元格值后进行判断并转换。你的代码中有一些小问题,特别是在判断单元格是否为空时。你应该检查 cell.value 而不是 cell 本身。

    以下是修正后的代码示例:

    from openpyxl import load_workbook
    
    def get_sheet(f_path, sheet_name):
        workbook = load_workbook(f_path)
        return workbook[sheet_name]
    
    def get_cell_data(f_path, sheet_name, r_num, c_num):
        sheet = get_sheet(f_path, sheet_name)
        cell = sheet.cell(row=r_num, column=c_num)
        
        # 直接检查 cell.value 是否为 None
        if cell.value is None:
            return ''  # 返回空字符串
        
        return cell.value  # 返回单元格的实际值
    
    # 示例调用
    f_path = 'your_file.xlsx'
    sheet_name = 'Sheet1'
    r_num = 1
    c_num = 1
    cell_data = get_cell_data(f_path, sheet_name, r_num, c_num)
    print(cell_data)
    

    在这个代码中,我们直接检查 cell.value 是否为 None,如果是,则返回空字符串 ''。否则,返回单元格的实际值。这样可以确保在读取空单元格时不会返回 None

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 11月15日