在Pandas Python中读取XLSB文件

Gay*_*tri 16 python pandas

关于这个问题有很多问题,但是关于如何将xlsb文件读入pandas并没有简单的答案.是否有捷径可寻?

Gle*_*son 56

随着1.0.0pandas -的发布,January 29, 2020增加了对二进制 Excel 文件的支持。

import pandas as pd
df = pd.read_excel('path_to_file.xlsb', engine='pyxlsb')
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 您将需要升级熊猫 - pip install pandas --upgrade
  • 您将需要安装pyxlsb-pip install pyxlsb


Fin*_*und 22

嗨,实际上有一种方法.只需使用pyxlsb库.

import pandas as pd
from pyxlsb import open_workbook as open_xlsb

df = []

with open_xlsb('some.xlsb') as wb:
    with wb.get_sheet(1) as sheet:
        for row in sheet.rows():
            df.append([item.v for item in row])

df = pd.DataFrame(df[1:], columns=df[0])
Run Code Online (Sandbox Code Playgroud)

  • 目前尚不存在这种情况。 (3认同)

gma*_*mar 7

Pyxlsb 确实是读取 xlsb 文件的一个选项,但是相当有限。

我建议使用 xlwings 包,它可以读取和写入 xlsb 文件,而不会丢失 xlsb 文件中的工作表格式、公式等。有大量可用文档。

import pandas as pd
import xlwings as xw

app = xw.App()
book = xw.Book('file.xlsb')
sheet = book.sheets('sheet_name')
df = sheet.range('A1').options(pd.DataFrame, expand='table').value
book.close()
app.kill()
Run Code Online (Sandbox Code Playgroud)

本例中的“A1”是 Excel 表格的起始位置。要写入 xlsb 文件,只需编写:

sheet.range('A1').value = df
Run Code Online (Sandbox Code Playgroud)

  • 这增加了一个主要要求:您必须有一个正在运行的 Excel 实例。这在 Linux 机器上不起作用。 (8认同)