java - 如何使用 python 解码编码的 Excel 文件

标签 java python pandas encoding base64

我的 Java 程序员将 Excel 文件转换为二进制文件并将二进制内容发送给我。

他使用 sun.misc.BASE64Encodersun.misc.BASE64Decoder() 进行编码。

我需要使用 python 将二进制数据转换为数据帧。

数据看起来像,

UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAATAAgCW0NvbnRlbnRfVHl........

我尝试了 bas64 解码器,但没有帮助。

我的代码:

import base64
with open('encoded_data.txt','rb') as d:
    data=d.read()
print(data)
`UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAAATAAgCW0NvbnRlbnRfVHl........`
decrypted=base64.b64decode(data)
print(decrypt)
  'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00b\xee\x9dh^\x01\x00\x00\x90\x04\x00\x00\x13\x00\x08\x02[Content_Types].xml \xa2\x04\x02(\xa0\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

请帮我将此二进制数据转换为 pandas 数据框。

最佳答案

你就快到了。既然解密的对象是一个字节字符串,为什么不使用BytesIO

import io
import pandas as pd

toread = io.BytesIO()
toread.write(decrypted)  # pass your `decrypted` string as the argument here
toread.seek(0)  # reset the pointer

df = pd.read_excel(toread)  # now read to dataframe

回答您的评论中的问题:如何将 df 转换为二进制编码对象?

好吧,如果你想用 pandas 将其转换回 b64 编码对象,然后将其转换为 Excel,那么:

towrite = io.BytesIO()
df.to_excel(towrite)  # write to BytesIO buffer
towrite.seek(0)  # reset pointer
encoded = base64.b64encode(towrite.read())  # encoded object

将编码对象写入文件(只是为了关闭循环:P):

with open("file.txt", "wb") as f:
    f.write(encoded)

关于java - 如何使用 python 解码编码的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52075814/

相关文章:

python - 如何向 matplotlib 注释添加附加文本

Python 计算数据透视表中的所有 bool 值

python - 如何在不使用 range() python 的情况下删除文本文档的特定部分

JavaFX - 修改子节点大小后更新 BorderPane 的大小

java - 为什么我的 SQL create 语句导致我的应用程序崩溃?

java - Xamarin Studio 中的 Android - 错误 : package com. google.android.gms.tagmanager 不存在

python - opencv - python - 在 cv2.inRange 中使用 HSV 颜色时感到困惑

java - 在运行时更改 jTable 模型

python - 无法从 python 2.7 中的命令行获取真/假值

python - Python 中带递归的乘法函数