>>> from env_helper import info; info()
页面更新时间: 2024-04-06 23:08:45
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
1.5. 案例:根据XLSX生成HTML¶
HTML 网页是一种常用的输出方式。 HTML 是一种纯文本, 这里用字符串处理的方法。
1.5.1. 场景说明¶
读取表格的每一行每一列数据,并且写入到新建html文件中。 以表格的排列方式展示数据,文字内容对应生成超链接,响应鼠标点击事件,弹出文字内容相对应的网址链接。
1.5.2. 解决思路¶
使用openpyxl模块的load_workbook函数,加载防灾减灾数据目录-中英文_20200629.xlsx
文件,
获取xlsx文件里的‘中英文含摘要’表,读取表中每一行数据,
同时准备出来写入html文件的str字符串,并且把css样式写到html头部,
将文字内容、数据链接格式化填充到str字符串的<a>
标签里,
最后写入防灾减灾数据目录-中英文_20200629.html文件。
1.5.3. 解决方法¶
从openpyxl模块导入所需要的
load_workbook
函数使用
load_workbook('防灾减灾数据目录-中英文_20200629.xlsx')
函数加载xlsx文件get_sheet_by_name('中英文含摘要')
根据表名获取表内容str字符串写入html头部代码,table和a标签的css样式
>>> from openpyxl import load_workbook
>>> wb = load_workbook('防灾减灾数据目录-中英文_20200629.xlsx')
>>> wb.sheetnames
['中英文含摘要']
>>> str="""
>>> <html>
>>> <head><meta charset="utf-8">
>>> <style>
>>> table{
>>> min-width:1000px;
>>> border
>>> }
>>>
>>> table,th,td
>>> {
>>> border:1px solid green;
>>> }
>>> a{
>>> text-decoration: none;
>>> }
>>> a:link,a:visited,a:active{color:black}
>>> a:hover{color:green}
>>> </style>
>>> </head>
>>> <body>
>>> <div>
>>> <table>
>>> """
>>> i=0
>>> sheet = wb['中英文含摘要']
遍历sheet.rows
,逐行处理数据,读取的第一行表内容为表头,使用format函数将序列、标题、简介和链接列为参数,格式化填写到str字符串里
新建html文件,并将写好的str内容写到文件并保存
>>> for row in sheet.rows:
>>> str=str+"""<tr>"""
>>> if i==0:
>>> str=str+"""<th>{id}</th>
>>> <th><a href="{url}" target="_blank">{title}</a></th>
>>> <th><a href="{url}" target="_blank">{intro}</a></th>
>>> """.format( id = i if i!=0 else '',
>>> title = row[4].value,
>>> intro = row[5].value,
>>> url = row[1].value)
>>> else:
>>> str=str+"""<td>{id}</td>
>>> <td><a href="{url}" target="_blank">{title}</a></td>
>>> <td><a href="{url}" target="_blank">{intro}</a></td>
>>> """.format( id = i if i!=0 else '',
>>> title = row[4].value,
>>> intro = row[5].value,
>>> url = row[1].value)
>>> str=str+"""</tr>"""
>>> i=i+1
>>> str=str+"""</table> </div> </body></html>"""
>>> fo = open("防灾减灾数据目录-中英文_20200629.html", "w")
>>> fo.write(str)
>>> fo.close()