import pandas as pd
def excel_to_html_with_footer(file_path, sheet_name, range_address, html_path, footer_text="有问题请联系我"):
"""
读取Excel指定区域并生成HTML,底部添加联系文字
"""
try:
# 1. 读取Excel数据
excel_file = pd.ExcelFile(file_path)
df = excel_file.parse(sheet_name)
# 2. 解析并提取指定区域
def parse_range(range_str):
import re
matches = re.findall(r'([A-Z]+)(\d+)', range_str)
if len(matches) != 2:
raise ValueError(f"无效范围: {range_str},示例: A1:C10")
start_col, start_row = matches[0]
end_col, end_row = matches[1]
def col_to_num(col):
num = 0
for c in col:
num = num * 26 + (ord(c.upper()) - ord('A') + 1)
return num - 1
start_col_num = col_to_num(start_col)
end_col_num = col_to_num(end_col)
start_row_num = int(start_row) - 1
end_row_num = int(end_row) - 1
return start_row_num, end_row_num, start_col_num, end_col_num
start_row, end_row, start_col, end_col = parse_range(range_address)
sub_df = df.iloc[start_row:end_row+1, start_col:end_col+1]
# 3. 生成基础HTML(NaN显示为空)
html_content = sub_df.to_html(na_rep='', index=False, justify='center')
# 4. 构建完整HTML并添加底部文字
full_html = f"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{sheet_name}数据</title>
<style>
table {{ border-collapse: collapse; width: 100%; }}
th, td {{ border: 1px solid #ddd; padding: 8px; text-align: center; }}
th {{ background-color: #f2f2f2; font-weight: bold; }}
.footer {{ margin-top: 20px; padding: 10px; text-align: center; color: #666; font-size: 14px; }}
</style>
</head>
<body>
<div style="max-width: 900px; margin: 0 auto; padding: 20px;">
<h3 style="text-align: center; color: #333;">{sheet_name} - {range_address} 数据</h3>
{html_content}
<div class="footer">{footer_text}</div>
</div>
</body>
</html>
"""
# 5. 保存HTML文件
with open(html_path, 'w', encoding='utf-8') as f:
f.write(full_html)
print(f"HTML生成成功,已添加底部文字: {footer_text}")
return True
except Exception as e:
print(f"出错: {str(e)}")
return False
# 使用示例
if __name__ == "__main__":
FILE_PATH = "你的文件.xlsx"
SHEET_NAME = "Sheet1"
RANGE_ADDRESS = "A1:E20"
HTML_PATH = "输出.html"
excel_to_html_with_footer(
file_path=FILE_PATH,
sheet_name=SHEET_NAME,
range_address=RANGE_ADDRESS,
html_path=HTML_PATH
)