excel2html 把表格转化为html

该博客介绍了一个Python函数,能够将.xls格式的表格文件转换成HTML字符串。函数考虑了单元格的合并,并提供了两种输出模式:包含文字信息和仅结构信息。在主函数中,它读取Excel文件,遍历单元格,处理合并的单元格,并生成相应的HTML表格。最后,将HTML字符串写入文件或直接打印。
部署运行你感兴趣的模型镜像
import os
from xlrd import open_workbook,formatting


def Excel2Html(filename, with_text=True):
    """
    该函数把.xls的表格文件转化为html字符串
    参数:
    with_text为True:输出表格结构和文字信息
    with_text为False:只输出表格结构信息
    """
    filepath = filename
    # wb = open_workbook(filepath,formatting_info=True)
    wb = open_workbook(filepath,formatting_info=False)
    sheet = wb.sheet_by_index(0)
    if with_text:
        html = '<table class="previewtable" border="1" cellpadding="0" cellspacing="0">'
    else:
        html = '<table>'

    mergedcells={}
    mergedsapn={}
    mergedcellvalue={}
    for crange in sheet.merged_cells:
        rlo, rhi, clo, chi = crange
        for rowx in range(rlo, rhi):
            for colx in range(clo, chi):
                mergedcells[(rowx,colx)]=False
                value = str(sheet.cell_value(rowx,colx))
                if value.strip() != '':
                    mergedcellvalue[(rlo,clo)]=value

        mergedcells[(rlo,clo)]=True
        mergedsapn[(rlo,clo)]=(rhi-rlo, chi-clo)
        mergedsapn[(rlo,clo)]=(rhi-rlo, chi-clo)

    for row in range(sheet.nrows):
        html=html+'<tr>'
        for col in range(sheet.ncols):
            if (row,col) in mergedcells:
                if mergedcells[(row,col)]==True:
                    rspan,cspan = mergedsapn[(row,col)]
                    value = ''
                    if (row,col) in mergedcellvalue:
                        value = mergedcellvalue[(row,col)]
                    if with_text:
                        html=html+'<td rowspan=%s colspan=%s>%s</td>'  % (rspan, cspan, value)
                    else:
                        html=html+'<td rowspan=%s colspan=%s></td>'  % (rspan, cspan)
            else:
                value =sheet.cell_value(row,col)
                if with_text:
                    html=html+'<td>' + str(value) + '</td>'
                else:
                    html=html+'<td>' + '</td>'
        html=html+'</tr>'
    html=html+'</table>'
    return html.replace(" rowspan=1", "").replace(" colspan=1", "")


if __name__ == "__main__":
    import codecs
    html_string = Excel2Html("test.xlsx", True)
    print(html_string)
    with codecs.open("dada.html", "w") as html_file:
        html_file.write(html_string)

如果有些表格格式不支持,请参考:.xlsx .xls

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guopeiAI

请博主加个火腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值