https://github.com/xuri/excelize-py
Excelize is a Python port of Go Excelize library that allow you to write to and read from XLAM / XLSM / XLSX / XLTM / XLTX files.
https://github.com/xuri/excelize-py
calculation chart data-analysis data-science data-visualization ecma-376 excel excelize golang microsoft office ooxml pipy python spreadsheet visualization xlsm xlsx xlsxreader xlsxwriter
Last synced: 1 day ago
JSON representation
Excelize is a Python port of Go Excelize library that allow you to write to and read from XLAM / XLSM / XLSX / XLTM / XLTX files.
- Host: GitHub
- URL: https://github.com/xuri/excelize-py
- Owner: xuri
- License: bsd-3-clause
- Created: 2024-11-25T12:42:56.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-05-04T06:08:32.000Z (5 days ago)
- Last Synced: 2025-05-04T07:19:35.800Z (5 days ago)
- Topics: calculation, chart, data-analysis, data-science, data-visualization, ecma-376, excel, excelize, golang, microsoft, office, ooxml, pipy, python, spreadsheet, visualization, xlsm, xlsx, xlsxreader, xlsxwriter
- Language: Python
- Homepage: https://xuri.me/excelize
- Size: 397 KB
- Stars: 13
- Watchers: 6
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# excelize-py
Package excelize-py is a Python port of Go [Excelize](https://github.com/xuri/excelize) library, providing a set of functions that allow you to write and read from XLAM / XLSM / XLSX / XLTM / XLTX files. Supports reading and writing spreadsheet documents generated by Microsoft Excel™ 2007 and later. Supports complex components by high compatibility, and provided streaming API for generating or reading data from a worksheet with huge amounts of data. This library needs Python version 3.9 or later. The full API docs can be found at [docs reference](https://xuri.me/excelize/).
## Platform Compatibility
Operating system | CPU Architecture
---|---
Windows | amd64, arm64, i686
Darwin | amd64, arm64
Linux | amd64, arm64, i686## Basic Usage
### Installation
```bash
pip install excelize
```### Create spreadsheet
Here is a minimal example usage that will create spreadsheet file.
```python
import excelizef = excelize.new_file()
try:
# Create a new sheet.
index = f.new_sheet("Sheet2")
# Set value of a cell.
f.set_cell_value("Sheet2", "A2", "Hello world.")
f.set_cell_value("Sheet1", "B2", 100)
# Set active sheet of the workbook.
f.set_active_sheet(index)
# Save spreadsheet by the given path.
f.save_as("Book1.xlsx")
except RuntimeError as err:
print(err)
finally:
err = f.close()
if err:
print(err)
```### Reading spreadsheet
The following constitutes the bare to read a spreadsheet document.
```python
import excelizetry:
f = excelize.open_file("Book1.xlsx")
except RuntimeError as err:
print(err)
exit()
try:
# Get value from cell by given worksheet name and cell reference.
cell = f.get_cell_value("Sheet1", "B2")
print(cell)
# Get all the rows in the Sheet1.
rows = f.get_rows("Sheet1")
for row in rows:
for cell in row:
print(f"{cell}\t", end="")
print()
except RuntimeError as err:
print(err)
finally:
# Close the spreadsheet.
err = f.close()
if err:
print(err)
```### Add chart to spreadsheet file
With Excelize chart generation and management is as easy as a few lines of code. You can build charts based on data in your worksheet or generate charts without any data in your worksheet at all.
```python
import excelizef = excelize.new_file()
data = [
[None, "Apple", "Orange", "Pear"],
["Small", 2, 3, 3],
["Normal", 5, 2, 4],
["Large", 6, 7, 8],
]
try:
for idx, row in enumerate(data):
cell = excelize.coordinates_to_cell_name(1, idx + 1, False)
f.set_sheet_row("Sheet1", cell, row)
chart = excelize.Chart(
type=excelize.ChartType.Col3DClustered,
series=[
excelize.ChartSeries(
name="Sheet1!$A$2",
categories="Sheet1!$B$1:$D$1",
values="Sheet1!$B$2:$D$2",
),
excelize.ChartSeries(
name="Sheet1!$A$3",
categories="Sheet1!$B$1:$D$1",
values="Sheet1!$B$3:$D$3",
),
excelize.ChartSeries(
name="Sheet1!$A$4",
categories="Sheet1!$B$1:$D$1",
values="Sheet1!$B$4:$D$4",
),
],
title=[excelize.RichTextRun(text="Fruit 3D Clustered Column Chart")],
)
f.add_chart("Sheet1", "E1", chart)
# Save spreadsheet by the given path.
f.save_as("Book1.xlsx")
except RuntimeError as err:
print(err)
finally:
err = f.close()
if err:
print(err)
```### Add picture to spreadsheet file
```python
import excelizetry:
f = excelize.open_file("Book1.xlsx")
except RuntimeError as err:
print(err)
exit()
try:
# Insert a picture.
f.add_picture("Sheet1", "A2", "image.png", None)
# Insert a picture to worksheet with scaling.
f.add_picture("Sheet1", "D2", "image.jpg", excelize.GraphicOptions(
scale_x=0.5,
scale_y=0.5,
))
# Insert a picture offset in the cell with printing support.
f.add_picture("Sheet1", "H2", "image.gif", excelize.GraphicOptions(
print_object=True,
lock_aspect_ratio=False,
offset_x=15,
offset_y=10,
locked=False,
))
# Save the spreadsheet with the origin path.
f.save()
except RuntimeError as err:
print(err)
finally:
# Close the spreadsheet.
err = f.close()
if err:
print(err)
```## Contributing
Contributions are welcome! Open a pull request to fix a bug, or open an issue to discuss a new feature or change.
## Licenses
This program is under the terms of the BSD 3-Clause License. See [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause).
The Excel logo is a trademark of [Microsoft Corporation](https://aka.ms/trademarks-usage). This artwork is an adaptation.
gopher.{ai,svg,png} was created by [Takuya Ueda](https://twitter.com/tenntenn). Licensed under the [Creative Commons 3.0 Attributions license](http://creativecommons.org/licenses/by/3.0/).