Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
pandas library, enabling you to parse .xlsx, .xls, etc. files with high fidelity.
Aspose.Cells offers:
.xls, .xlsx, .xlsb, .ods, .csv, .htmlopenpyxl or xlrdcl command to check the version of the C++ compiler. Make sure the compiler version is 19.3x or higher before proceeding with the following build steps.git clone https://github.com/pandas-dev/pandas.git
cd to the pandas source directory you just created with the clone command# Set up virtual environment
python -m venv .venv
.\.venv\Scripts\activate # on Windows
# source .venv/bin/activate # on Linux/macOS
# Install aspose-cells-python
pip install aspose-cells-python
# Install the build dependencies
python -m pip install -r requirements-dev.txt
Create a new file:
pandas/io/excel/_asposecells.py
Add the following content:
# pandas/io/excel/_asposecells.py
import pandas as pd
from aspose.cells import Workbook
class AsposeCellsExcelReader:
def __init__(self, filepath_or_buffer, sheet_name=0, header=0, **kwargs):
self.filepath = filepath_or_buffer
self.sheet_name = sheet_name
self.header = header
def parse(self, sheet_name, header=0, **kwargs):
wb = Workbook(self.filepath)
worksheet = wb.worksheets[sheet_name] if isinstance(sheet_name, int) else wb.worksheets.get(sheet_name)
# Get the Cells collection from the worksheet
cells = worksheet.cells
# Calculate number of columns: max_col - min_col (both are 0-based)
col_count = cells.max_data_column - cells.min_data_column
# Initialize a list to hold all the row data
output_data = []
# Get the index of the first row that contains data
first_data_row_Index = cells.min_data_row
# Iterate through all the rows
for row in cells.rows:
if row is None:
continue # Skip if the row is not initialized
row_data = []
for cell in row:
row_data.append(cell.value)
output_data.append(row_data)
# Prepare the column names
columns = []
if header is not None:
row = cells.rows[first_data_row_Index]
for cell in row:
columns.append(cell.value)
# Remove the header row from the data
output_data = output_data[1:]
else:
# If no header, generate default column names like "Unnamed: 0", "Unnamed: 1", ...
columns = [f"Unnamed: {i}" for i in range(col_count + 1)]
# Convert the data into a pandas DataFrame
return pd.DataFrame(output_data, columns=columns)
def close(self):
pass # Required by pandas API
In pandas/io/excel/_base.py, find the class ExcelFile class, and add
Add the following import line after the existing from pandas.io.excel._xlrd import XlrdReader:
from pandas.io.excel._asposecells import AsposeCellsExcelReader
and then add the following code in _engines: Mapping[str, Any]
_engines: Mapping[str, Any] = {
...
"asposecells": AsposeCellsExcelReader,
}
# build and install pandas
python -m pip install -ve . --no-build-isolation
✅ If you encounter a compilation error during the build process, such as:Cython.Compiler.Errors.InternalError: Internal compiler error: ‘free_threading_config.pxi’ not found,you can try running the following command and then compile again.
# remove all untracked files, directories, and ignored files from the working directory.
git clean -xfd
You can use the following Excel file for testing.
import pandas as pd
# asposecells
df = pd.read_excel("test.xlsx", engine="asposecells", sheet_name=0, header=0)
# print and check DataFrame
print(df)
After running it, you should get a result like this.

read_excel behavior.Aspose.Cells for Python via .NET directly outside of pandas if desired.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.