xlsx2html¶
A simple export from xlsx format to html tables with keep cell formatting
Install¶
From pip
pip install xlsx2html
From github dev version
pip install -e "git+https://github.com/Apkawa/xlsx2html.git#egg=xlsx2html"
Compatibly¶
Python |
xlsx2html |
---|---|
2.7 |
0.1.10 |
3.5 |
0.2.1 |
>=3.6 |
latest |
Usage¶
Simple usage¶
from xlsx2html import xlsx2html
out_stream = xlsx2html('path/to/example.xlsx')
out_stream.seek(0)
print(out_stream.read())
pass output file
from xlsx2html import xlsx2html
xlsx2html('path/to/example.xlsx', 'path/to/output.html')
use file like objects
import io
from xlsx2html import xlsx2html
# must be binary mode
xlsx_file = open('path/to/example.xlsx', 'rb')
out_file = io.StringIO()
xlsx2html(xlsx_file, out_file, locale='en')
out_file.seek(0)
result_html = out_file.read()
from shell
python -m xlsx2html path/to/example.xlsx path/to/output.html
Advanced usage¶
Use converter class¶
from xlsx2html import XLSX2HTMLConverter
converter = XLSX2HTMLConverter(
filepath='path/to/example.xlsx',
locale='de_DE',
parse_formula=True,
inline_styles=False
)
html = converter.get_html(sheet="sheet name")
Export sheet to only table¶
from xlsx2html import XLSX2HTMLConverter
converter = XLSX2HTMLConverter(
filepath='path/to/example.xlsx',
locale='de_DE',
parse_formula=True,
inline_styles=False
)
result = converter.get_table(sheet="sheet name", extra_attrs={'id': 'table_id'})
print(f"""
<html>
<head>
<style type="text/css">
{result.css}
</style>
</head>
<body>
{result.html}
</body>
</html>""")
Export all sheets¶
from xlsx2html import XLSX2HTMLConverter
converter = XLSX2HTMLConverter(
filepath='path/to/example.xlsx',
locale='de_DE',
parse_formula=True,
inline_styles=False
)
results = converter.get_tables(extra_attrs={'class': 'xlsx_sheet'})
css_str = '\n'.join([r.css for r in results])
tables_str = '\n'.join([r.html for r in results])
print(f"""
<html>
<head>
<style type="text/css">
{css_str}
</style>
</head>
<body>
{tables_str}
</body>
</html>""")
use openpyxl.Workbook instance¶
import openpyxl
from xlsx2html import xlsx2html
XLSX_FILE = 'path/to/example.xlsx'
# Simple, but no work with parse_formula=True
out_file = xlsx2html(load_workbook(XLSX_FILE, data_only=True))
# Use converter
converter = XLSX2HTMLConverter(
filepath=load_workbook(XLSX_FILE, data_only=True),
parse_formula=True,
formula_wb=load_workbook(XLSX_FILE, data_only=False),
)
out_file = converter.get_html_stream()
Limitations¶
No support:
[ ] overline (no working with openpyxl and LibreOffice with xlsx)
[ ] conditional styles
[ ] charts
[ ] freezing panes
[ ] diagonal borders
[ ] pattern cell fill
[ ] Have issue with
border-collapse: collapse
and merged cells