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

含阿拉伯语的Pandas DataFrame导出Excel报AttributeError如何解决

错误原因
  • 核心报错触发点:pandas.DataFrame.to_excel() 方法指定本地文件路径作为参数时,会直接将文件写入磁盘,返回值为None。你将返回的None赋值给excel变量后调用encode()方法,直接触发'NoneType' object has no attribute 'encode'报错。
  • 代码语法错误:构造DataFrame的字典结构中,所有阿拉伯语字段的末尾都多了多余的英文双引号",代码本身无法通过语法校验。
  • 逻辑调用错误:pd.read_excel() 是用于读取本地Excel文件的方法,接收参数为文件路径、类文件对象,你传入已经构造完成的DataFrame对象data,属于方法调用逻辑完全错误。
修复方案

修复前请先安装xlsx格式依赖库:pip install openpyxl

场景1:需要先将Excel保存到本地磁盘,再转base64

import pandas as pd 
import base64

# 修正DataFrame构造语法,去掉多余的双引号
data = pd.DataFrame({
    "SourceNo": [11192, 11193, 11194],
    "IssuedDate": ['3/15/2021', '3/15/2021', '3/15/2021'],
    "نوع": ["هاتف", "تلفاز", "سماعة"],
    "مكان الحدث": ["حي السلم", "منطقة الشمال", "ميناء"], 
    "التاريخ": ["3/15/2021", "3/15/2021", "3/15/2021"],
    "أشخاص": ["مواطنون", "مواطنون", "مجهول"]
})  

# 去掉错误的pd.read_excel调用,直接使用构造好的data
save_path = r"F:\update2.xlsx"
data.to_excel(save_path, index=False, header=True, engine='openpyxl')

# 读取本地Excel文件的二进制内容转base64
with open(save_path, 'rb') as f:
    b64 = base64.b64encode(f.read()).decode("utf-8")

场景2:Streamlit下载场景(推荐,无需写入本地磁盘,直接在内存生成Excel)

更适合Streamlit前端下载需求,避免磁盘IO开销:

import pandas as pd 
import base64
from io import BytesIO
import streamlit as st

# 构造DataFrame代码同上
data = pd.DataFrame({
    "SourceNo": [11192, 11193, 11194],
    "IssuedDate": ['3/15/2021', '3/15/2021', '3/15/2021'],
    "نوع": ["هاتف", "تلفاز", "سماعة"],
    "مكان الحدث": ["حي السلم", "منطقة الشمال", "ميناء"], 
    "التاريخ": ["3/15/2021", "3/15/2021", "3/15/2021"],
    "أشخاص": ["مواطنون", "مواطنون", "مجهول"]
})  

# 内存中生成Excel二进制内容
output = BytesIO()
data.to_excel(output, index=False, header=True, engine='openpyxl')
output.seek(0)
b64 = base64.b64encode(output.read()).decode("utf-8")

# Streamlit下载按钮示例
href = f'<a href="data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,{b64}" download="update2.xlsx">下载Excel文件</a>'
st.markdown(href, unsafe_allow_html=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 22:36:04