PyPi Build Status Codecov Requirements Status PyUP Python versions License

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

Indices and tables