SC
def table_Excel(tableHtml):
soup = BeautifulSoup(content, 'html.parser')
tables = soup.find_all('table')
file_name = "export{}.xlsx".format(time.time())
writer = pd.ExcelWriter(file_name, engine='xlsxwriter')
workbook = writer.book
for idx, table in enumerate(tables):
table_title = 'Table-' + str(idx)
df_table = pd.read_html(str(table), header=0, flavor='bs4')[0]
df_table.dropna(how='all', inplace=True)
df_table.to_excel(writer, index=False, sheet_name=table_title)
worksheet = writer.sheets[table_title]
header_fmt = workbook.add_format({'font_size': 14, 'bold': True, 'fg_color': '#D7E4BC', 'border': 1})
for col_num, value in enumerate(df_table.columns.values):
worksheet.write(0, col_num, value, header_fmt)
worksheet.set_column('A:Z', 25)
writer.save()
print('Export End!')
Analyse
- 实现的功能:将html 中所有table汇成n个子表,对子表首行设置样式
- 处理html中table的步骤:
- 利用BS解析html文件,找出所有table标签
- 设置导出文件名
- 初始化ExcelWriter变量,传入
导出文件名
- 创建工作簿
- 遍历n个table标签
- 设置子表名
- 利用pd.read_html方法将html 中的table对象转换成df对象
- 清理nan数据
- 将df对象转化成excel对象,传入writer和子表名称等等
- 生成worksheet 子表对象
- 为工作簿添加表头格式
- 遍历子表第一行的列值,为其 添加表头格式
- 关闭writer 对象,输出Excel文件
Differ
- workbook ,worksheet,df和writer的区别:
- workbook工作簿
- worksheet 子表
- df 对象
- writer 为把df对象写入excel表中的类