Чтение файла XLSB в Pandas Python

На это много вопросов, но простого ответа на вопрос о том, как читать файл xlsb в pandas, не было. Есть простой способ сделать это?

Ответы

Ответ 1

Привет, на самом деле есть способ. Просто используйте библиотеку 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])

Ответ 2

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()

"А1" в этом случае является начальной позицией таблицы Excel. Чтобы записать в файл xlsb, просто напишите:

sheet.range('A1').value = df

Ответ 3

Если вы хотите прочитать большой двоичный файл или любой файл Excel с некоторыми диапазонами, вы можете прямо указать этот код

range = (your_index_number)
first_dataframe = []
second_dataframe = []
with open_xlsb('Test.xlsb') as wb:
    with wb.get_sheet('Sheet1') as sheet:
        i=0
        for row in sheet.rows():
            if(i!=range):
                first_dataframe.append([item.v for item in row])
                i=i+1
            else:
                second_dataframe.append([item.v for item in row])


first_dataframe = pd.DataFrame(first_dataframe[1:], columns=first[0])
second_dataframe = pd.DataFrame(second_dataframe[:], columns=first.columns)