A Python library for creating, reading, and modifying Excel files (.xlsx format)
Project description
Aspose.Cells FOSS for Python
A lightweight Python library for creating, reading, and modifying Excel files (.xlsx format) without requiring Microsoft Excel.
Features
- Create & Edit Excel Files: Create new workbooks or modify existing .xlsx files
- Cell Operations: Read/write cell values, formulas, and apply formatting
- Styling: Apply fonts, colors, borders, number formats, and alignment
- Multiple Worksheets: Add, remove, and manage worksheets
- Data Validation: Add dropdown lists, number ranges, and custom validation rules
- Comments: Add and manage cell comments with author and rich text
- Hyperlinks: Create links to URLs, emails, files, and internal references
- Auto-Filters: Apply filtering to data ranges
- Conditional Formatting: Apply rules-based formatting
- CSV/JSON/Markdown Export: Save workbooks in multiple formats
- Encryption: Password-protect Excel files with AES encryption
- Workbook Protection: Protect workbook structure and worksheets
- Charts: Create 16 chart types — Line, Bar, Pie, Area, Scatter, Waterfall, Combo, Stock, Surface, Radar, Treemap, Sunburst, Histogram, Funnel, Box & Whisker, and Map
- Pictures: Embed and anchor images (JPEG, PNG, etc.) to worksheet cells
- Drawing Shapes: Add 30+ preset shapes — rectangles, ovals, arrows, stars, text boxes, callouts, and more
- Sparklines: Embed mini-charts (Line, Column, Win-Loss) directly inside cells
- Excel Tables: Create and style structured tables (ListObject) with auto-filter and column headers
- Manual Page Breaks: Add and remove horizontal and vertical page breaks
- Formula Evaluator: Evaluate basic formulas and cell references at read time
- Merge Cells: Merge and unmerge cell ranges
- Print Area: Define the print area for a worksheet
Installation
pip install aspose-cells-foss
Quick Start
Create a new Excel file
from aspose_cells import Workbook
# Create a new workbook
workbook = Workbook()
# Get the first worksheet
worksheet = workbook.worksheets[0]
# Set cell values
worksheet.cells["A1"].put_value("Hello")
worksheet.cells["B1"].put_value("World")
worksheet.cells["A2"].put_value(42)
worksheet.cells["B2"].put_value(3.14)
# Save the workbook
workbook.save("output.xlsx")
Read an existing Excel file
from aspose_cells import Workbook
# Open an existing workbook
workbook = Workbook("input.xlsx")
# Access a worksheet
worksheet = workbook.worksheets[0]
# Read cell values
value = worksheet.cells["A1"].value
print(f"Cell A1 contains: {value}")
Apply styling
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
cell = worksheet.cells["A1"]
cell.put_value("Styled Text")
# Get and modify the cell style
style = cell.get_style()
style.font.is_bold = True
style.font.color = "FF0000" # Red
style.font.size = 14
cell.set_style(style)
workbook.save("styled.xlsx")
Add data validation (dropdown list)
from aspose_cells import Workbook, DataValidationType
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Add a dropdown list validation
validation = worksheet.data_validations.add()
validation.type = DataValidationType.LIST
validation.formula1 = '"Option1,Option2,Option3"'
validation.add_area("A1:A10")
workbook.save("validation.xlsx")
Export to CSV
from aspose_cells import Workbook, SaveFormat
workbook = Workbook("input.xlsx")
workbook.save("output.csv", SaveFormat.CSV)
Password protection
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells["A1"].put_value("Confidential Data")
# Save with password protection
workbook.save("protected.xlsx", password="mypassword")
# Open a password-protected file
workbook2 = Workbook("protected.xlsx", password="mypassword")
Create a chart
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Add data
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
sales = [100, 150, 120, 180, 200, 170]
for i, (m, s) in enumerate(zip(months, sales), 2):
worksheet.cells[f"A{i}"].value = m
worksheet.cells[f"B{i}"].value = s
# Create a line chart anchored to rows 0-20, columns 4-12
chart = worksheet.charts.add_line(0, 4, 20, 12)
chart.title = "Monthly Sales"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Sales")
workbook.save("chart.xlsx")
Add a picture
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Embed an image anchored between two cells (0-based row/column indices)
worksheet.pictures.add("logo.png",
upper_left_row=1, upper_left_column=1,
lower_right_row=8, lower_right_column=5)
workbook.save("with_picture.xlsx")
Add drawing shapes
from aspose_cells import Workbook, MsoDrawingType, FillType, TextAlignmentType, TextAnchorType
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Add a rounded rectangle
shape = worksheet.shapes.add(
MsoDrawingType.ROUNDED_RECTANGLE,
upper_left_row=1, upper_left_column=1,
lower_right_row=5, lower_right_column=5
)
shape.text = "Hello!"
shape.fill.fore_color = "90EE90" # light green fill
shape.font.bold = True
shape.text_horizontal_alignment = TextAlignmentType.CENTER
shape.text_vertical_alignment = TextAnchorType.MIDDLE
# Add a text box
textbox = worksheet.shapes.add_text_box(7, 1, 11, 8)
textbox.text = "Notes go here"
workbook.save("shapes.xlsx")
Add sparklines
from aspose_cells import Workbook, SparklineType
workbook = Workbook()
worksheet = workbook.worksheets[0]
worksheet.name = "Sales"
# Data in B2:F6, sparklines displayed in G2:G6
group = worksheet.sparkline_groups.add(
sparkline_type=SparklineType.LINE,
data_range="Sales!B2:F6",
is_vertical=False,
location_range="G2:G6"
)
group.color_series = "0070C0" # blue sparkline line
workbook.save("sparklines.xlsx")
Create an Excel table
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Write headers and data
headers = ["Product", "Qty", "Price"]
worksheet.cells["A1"].value, worksheet.cells["B1"].value, worksheet.cells["C1"].value = headers
worksheet.cells["A2"].value, worksheet.cells["B2"].value, worksheet.cells["C2"].value = "Widget", 10, 9.99
# Create a table over A1:C2 (0-based indices)
table = worksheet.tables.add(start_row=0, start_col=0,
end_row=1, end_col=2,
has_headers=True, name="ProductTable")
table.table_style_info.name = "TableStyleMedium9"
workbook.save("table.xlsx")
Add manual page breaks
from aspose_cells import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Add a horizontal page break before row 20 (0-based)
worksheet.horizontal_page_breaks.add(19)
# Add a vertical page break before column D (0-based index 3)
worksheet.vertical_page_breaks.add(3)
workbook.save("page_breaks.xlsx")
Requirements
- Python 3.7 or higher
- pycryptodome >= 3.15.0
- olefile >= 0.46
Documentation
For more examples and detailed API documentation, see the examples directory.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the license.txt file for details.
Support
- Issues: GitHub Issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aspose_cells_foss_for_python-26.3.0.tar.gz.
File metadata
- Download URL: aspose_cells_foss_for_python-26.3.0.tar.gz
- Upload date:
- Size: 287.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48ecd277743295859f8687b6358cfaabfa6373fb13f6683ed845f9c3ea75a239
|
|
| MD5 |
6fcab9279d28d7d73fe69c5c8cb14ffa
|
|
| BLAKE2b-256 |
9f38619788cb0f090d15b1a1518b0dee43970bc533edd433f938ae91647af7b7
|
File details
Details for the file aspose_cells_foss_for_python-26.3.0-py3-none-any.whl.
File metadata
- Download URL: aspose_cells_foss_for_python-26.3.0-py3-none-any.whl
- Upload date:
- Size: 328.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d6ef2a2df2ea139dccd6f6e37f911cf997186beb653b9b2916a2058a50025e6
|
|
| MD5 |
13ea81b8bdf5d46164c1006a4c2b7cbe
|
|
| BLAKE2b-256 |
c18a9551cc4b339a007daebb5d9cd5c3c5a011868b9b6e650e0d1198dec67fe8
|