首页 > 解决方案 > 如何将数据框下载或转换为excel文件?

问题描述

试图将数据框转换或下载到带有阿拉伯数据的 excel 文件中。

但是当我运行脚本时系统崩溃并显示以下错误:

AttributeError: 'NoneType' object has no attribute 'encode'
Traceback:
File "F:\AIenv\lib\site-packages\streamlit\script_runner.py", line 333, in _run_script
    exec(code, module.__dict__)
File "f:\AIenv\streamlit\app2.py", line 712, in <module>
    main()
File "f:\AIenv\streamlit\app2.py", line 250, in main
    transform(df)
File "f:\AIenv\streamlit\app2.py", line 178, in transform
    download_file(df, types, new_types, "xls")
File "f:\AIenv\streamlit\app2.py", line 141, in download_file
    b64 = base64.b64encode(excel.encode()).decode("utf-8")

代码:

import pandas as pd 
import base64
        
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"]",
          أشخاص":["مواطنون","مواطنون","مجهول"]"
             })  

        df=pd.read_excel(data)
        excel = df.to_excel(r"F:\update2.xlsx", index = False, header=True,encoding="utf-8")
        b64 = base64.b64encode(excel.encode()).decode("utf-8")

这段代码的错误在哪里?

标签: pythonpandasencodingutf-8base64

解决方案


.to_excel方法写入一个文件并返回None. 如果您想要以 base64 编码的文件内容,请将其读回:

import pandas as pd 
import base64

df = 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'],
                   'أشخاص':['مواطنون','مواطنون','مجهول']})

df.to_excel('update2.xlsx', index = False, header=True,encoding='utf-8')

with open('update2.xlsx','rb') as f:
    b64 = base64.b64encode(f.read())

推荐阅读