from bs4 import BeautifulSoup
import openpyxl

# HTML内容，这里假设你已经有了一个HTML格式的表格字符串
html_content = """<table border=\"1\" ><tr>\n<td colspan=\"1\" rowspan=\"1\">客户：</td>\n<td colspan=\"7\" rowspan=\"1\">D305．京东商城</td>\n<td colspan=\"1\" rowspan=\"1\">发货方式：</td>\n<td colspan=\"1\" rowspan=\"1\">汽运</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">客户地址：</td>\n<td colspan=\"7\" rowspan=\"1\">北京市通州区马驹桥镇团瓢庄村南工业区99号</td>\n<td colspan=\"2\" rowspan=\"1\"></td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">联系电话：</td>\n<td colspan=\"6\" rowspan=\"1\">010-57835120转8189</td>\n<td colspan=\"1\" rowspan=\"1\">联系人：</td>\n<td colspan=\"2\" rowspan=\"1\">王统宝</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">收货地址：</td>\n<td colspan=\"6\" rowspan=\"1\">北京市通州区马驹桥镇团飘庄村南工业区99号</td>\n<td colspan=\"1\" rowspan=\"1\"></td>\n<td colspan=\"2\" rowspan=\"1\"></td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">收货电话：</td>\n<td colspan=\"6\" rowspan=\"1\"></td>\n<td colspan=\"1\" rowspan=\"1\">收货人：</td>\n<td colspan=\"2\" rowspan=\"1\"></td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">邮编：</td>\n<td colspan=\"3\" rowspan=\"1\"></td>\n<td colspan=\"1\" rowspan=\"1\">总码洋：</td>\n<td colspan=\"3\" rowspan=\"1\">¥6,912.00</td>\n<td colspan=\"1\" rowspan=\"1\">实洋：</td>\n<td colspan=\"1\" rowspan=\"1\">¥3,663.36</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">对方单号：</td>\n<td colspan=\"3\" rowspan=\"1\">1608530914</td>\n<td colspan=\"1\" rowspan=\"1\"></td>\n<td colspan=\"1\" rowspan=\"1\">折扣：</td>\n<td colspan=\"2\" rowspan=\"1\">53.00％</td>\n<td colspan=\"1\" rowspan=\"1\">销售费用：</td>\n<td colspan=\"1\" rowspan=\"1\">¥0.00</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">总品种：</td>\n<td colspan=\"2\" rowspan=\"1\">3</td>\n<td colspan=\"1\" rowspan=\"1\">总册数：</td>\n<td colspan=\"1\" rowspan=\"1\">216</td>\n<td colspan=\"1\" rowspan=\"1\">总包册</td>\n<td colspan=\"2\" rowspan=\"1\">3包（0）册</td>\n<td colspan=\"1\" rowspan=\"1\">总应收款：</td>\n<td colspan=\"1\" rowspan=\"1\">¥3,663.36</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">发货日期：</td>\n<td colspan=\"2\" rowspan=\"1\">0000-00-00</td>\n<td colspan=\"1\" rowspan=\"1\">到站：</td>\n<td colspan=\"1\" rowspan=\"1\">W001</td>\n<td colspan=\"5\" rowspan=\"1\">实洋大写：</td>\n</tr><tr>\n<td colspan=\"2\" rowspan=\"1\">子客户单位：</td>\n<td colspan=\"3\" rowspan=\"1\">陆文海</td>\n<td colspan=\"5\" rowspan=\"1\">子客户联系人：京东北京库</td>\n</tr><tr>\n<td colspan=\"2\" rowspan=\"1\">子客户电话：</td>\n<td colspan=\"8\" rowspan=\"1\">15311300007</td>\n</tr><tr>\n<td colspan=\"2\" rowspan=\"1\">子客户地址：</td>\n<td colspan=\"8\" rowspan=\"1\">北京市通州区马驹桥镇团瓢庄村南工业区99号</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">备注：</td>\n<td colspan=\"9\" rowspan=\"1\">补货，来源单号：SDYHAA000181255</td>\n</tr></table>"""
# html_content = '''<table border=\"1\" ><tr>\n<td colspan=\"2\" rowspan=\"1\">No.书号</td>\n<td colspan=\"1\" rowspan=\"1\">商品名称</td>\n<td colspan=\"1\" rowspan=\"1\">定价</td>\n<td colspan=\"1\" rowspan=\"1\">折扣</td>\n<td colspan=\"1\" rowspan=\"1\"> 数量</td>\n<td colspan=\"1\" rowspan=\"1\">码洋</td>\n<td colspan=\"1\" rowspan=\"1\">实洋</td>\n<td colspan=\"1\" rowspan=\"1\">包＋册</td>\n<td colspan=\"1\" rowspan=\"1\">库位 架</td>\n<td colspan=\"1\" rowspan=\"1\">号</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">1</td>\n<td colspan=\"1\" rowspan=\"1\"> 7554138564</td>\n<td colspan=\"1\" rowspan=\"1\">（HQ23）2024版《5.3》全优卷一年级上册 数学（北师大版BSD）</td>\n<td colspan=\"1\" rowspan=\"1\">¥32.0</td>\n<td colspan=\"1\" rowspan=\"1\">0 53％</td>\n<td colspan=\"1\" rowspan=\"1\">84</td>\n<td colspan=\"1\" rowspan=\"1\">¥2,688.00</td>\n<td colspan=\"1\" rowspan=\"1\">¥1,424.64</td>\n<td colspan=\"1\" rowspan=\"1\">1+0(84)</td>\n<td colspan=\"1\" rowspan=\"1\">电商湖南库未</td>\n<td colspan=\"1\" rowspan=\"1\">知</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">2</td>\n<td colspan=\"1\" rowspan=\"1\"> 7554138588</td>\n<td colspan=\"1\" rowspan=\"1\">（HQ26）2024版《5.3》全优卷四年级上册数学（北师大版BSD）</td>\n<td colspan=\"1\" rowspan=\"1\">¥32.0</td>\n<td colspan=\"1\" rowspan=\"1\">0 53％</td>\n<td colspan=\"1\" rowspan=\"1\"> 64</td>\n<td colspan=\"1\" rowspan=\"1\">¥2,048.00</td>\n<td colspan=\"1\" rowspan=\"1\">¥1,085.44</td>\n<td colspan=\"1\" rowspan=\"1\">1+0(64)</td>\n<td colspan=\"1\" rowspan=\"1\">电商湖南库未</td>\n<td colspan=\"1\" rowspan=\"1\">知</td>\n</tr><tr>\n<td colspan=\"1\" rowspan=\"1\">3</td>\n<td colspan=\"1\" rowspan=\"1\"> 7554138632</td>\n<td colspan=\"1\" rowspan=\"1\">（HQ28）2024版《5.3》全优卷六年级上册 数学（北师大版BSD）</td>\n<td colspan=\"1\" rowspan=\"1\">¥32.</td>\n<td colspan=\"1\" rowspan=\"1\">00 53％</td>\n<td colspan=\"1\" rowspan=\"1\"> 68</td>\n<td colspan=\"1\" rowspan=\"1\">¥2,176.00</td>\n<td colspan=\"1\" rowspan=\"1\">¥1,153.28</td>\n<td colspan=\"1\" rowspan=\"1\">1+0(68)</td>\n<td colspan=\"1\" rowspan=\"1\">电商湖南库未</td>\n<td colspan=\"1\" rowspan=\"1\">知</td>\n</tr></table>'''
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_content, 'html.parser')
table = soup.find('table')

# 创建Excel工作簿和工作表
wb = openpyxl.Workbook()
ws = wb.active

# 存储合并单元格的坐标信息
merges = []

# 遍历表格中的所有行
current_row = 1
for tr in table.find_all('tr'):
    # 遍历行中的所有单元格
    current_col = 1
    for td in tr.find_all('td'):
        # 获取单元格的值
        text = td.get_text(strip=True)
        # 获取单元格的列跨度和行跨度
        colspan = int(td.get('colspan', 1))
        rowspan = int(td.get('rowspan', 1))

        # 写入单元格的值
        for _ in range(colspan):
            ws.cell(row=current_row, column=current_col, value=text)
            current_col += 1

        # 存储合并单元格的坐标
        if colspan > 1 or rowspan > 1:
            merges.append((current_row, current_col - colspan, current_row + rowspan - 1, current_col - 1))

    current_row += 1

# 应用合并单元格
for start_row, start_col, end_row, end_col in merges:
    ws.merge_cells(start_row=start_row, start_column=start_col, end_row=end_row, end_column=end_col)

# 保存Excel文件
wb.save('output.xlsx')