吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 493|回复: 7
收起左侧

[经验求助] 根据excel里的数据,批量生成html源码

[复制链接]
钱途迷茫 发表于 2024-8-1 17:02
100吾爱币
需要做一个小脚本,excel和html模板如下,需要根据excel里每行的数据,批量生成出来html文件,html命名就按照序号那一栏的编号来
模板文件下载地址https://ww0.lanzout.com/iSYfZ265ynof

最佳答案

查看完整内容

看代码 以运行 可以用 py是文件夹 记得改名哈 [mw_shl_code=python,true]import pandas as pd from jinja2 import Template import os # 加载Excel文件 excel_file = 'py/1.xlsx' df = pd.read_excel(excel_file) # HTML模板 html_template = """ h3 { text-align:center } table { border-collapse: col ...

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
BI4VNS + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tutu2 发表于 2024-8-1 17:02
本帖最后由 tutu2 于 2024-8-1 20:38 编辑

看代码  以运行  可以用  py是文件夹  记得改名哈
[Python] 纯文本查看 复制代码
import pandas as pd  
from jinja2 import Template  
import os  
# 加载Excel文件  
excel_file = 'py/1.xlsx'  
df = pd.read_excel(excel_file)  

# HTML模板
html_template = """  
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title></title>
    <style>
        h3
        {
        text-align:center
        }
        table {
            border-collapse: collapse;
            font-size: 15px;
        width:100%
        }
        td {
            border: 1px solid #dfdfdf;
            padding:5px
        }
        table td:first-child {
            width: 40%;
            background-color: #eee;
            margin: 10px;
            padding: 15px;
        }
    </style>
</head>
<body>
    <table>
        {% for index, row in data.iterrows() %} 
        <tr>
            <td>船舶现识别牌号</td>
            <td>{{ row['船舶现识别牌号'] }}</td>  
        </tr>
        <tr>
            <td>纳管船舶识别牌号</td>
            <td>{{ row['纳管船舶识别牌号'] }}</td>  
        </tr>
        <tr>
            <td>船东姓名</td>
            <td>{{ row['船东姓名'] }}</td>  
        </tr>
        <tr>
            <td>总功率(马力)</td>
            <td>{{ row['总功率(马力)'] }}</td>  
        </tr>
        <tr>
            <td>船体材质</td>
           <td>{{ row['船体材质'] }}</td>  
        </tr>
        <tr>
            <td>船舶总长(米)</td>
             <td>{{ row['船舶总长(米)'] }}</td>  
        </tr>
        <tr>
            <td>日常停泊地点</td>
            <td>{{ row['日常停泊地点'] }}</td>  
        </tr>
        <tr>
            <td>作业区域</td>
            <td>{{ row['作业区域'] }}</td>
        </tr>
        {% endfor %} 
    </table><br>
<center><p>船舶照片</p></center>
{% for index, row in data.iterrows() %}  
<img src="1.jpg" width="100%">
{% endfor %} 
</body>
<script>var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?96f677bd2194ff927f22a70eba39c8bc"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();</script>
</body>
</html>  
"""  
# 使用Jinja2模板  
template = Template(html_template)  
# 为每个序号生成一个HTML文件  
for index, row in df.iterrows():  
    html_content = template.render(data=df.iloc[[index]])  
    file_name = f"{row['序号']}.html"  
    with open("py/"+file_name, 'w', encoding='utf-8') as f:  
        f.write(html_content)  
print("HTML文件已生成。")
algy5 发表于 2024-8-1 17:42
这个你看看,跟着改一下,你那个图片要设置路径,不然出不来的,还有表格的名称。
[Python] 纯文本查看 复制代码
import pandas as pd

# 读取 Excel 文件
file_path = 'path_to_your_excel_file.xlsx'  # 替换为你的 Excel 文件路径
df = pd.read_excel(file_path)

# HTML 模板
html_template = """
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <style>
h3 {
    text-align: center
}
table {
    border-collapse: collapse;
    font-size: 15px;
    width: 100%
}
td {
    border: 1px solid #dfdfdf;
    padding: 5px
}
table td:first-child {
    width: 40%;
    background-color: #eee;
    margin: 10px;
    padding: 15px;
}
    </style>
</head>

<body>

    <table>
        <tr>
            <td>船舶现识别牌号</td>
            <td>{ship_current_id}</td>
        </tr>
        <tr>
            <td>纳管船舶识别牌号</td>
            <td>{ship_management_id}</td>
        </tr>
        <tr>
            <td>船东姓名</td>
            <td>{owner_name}</td>
        </tr>
        <tr>
            <td>总功率(马力)</td>
            <td>{power}</td>
        </tr>
        <tr>
            <td>船体材质</td>
            <td>{material}</td>
        </tr>
        <tr>
            <td>船舶总长(米)</td>
            <td>{length}</td>
        </tr>
        <tr>
            <td>日常停泊地点</td>
            <td>{parking_spot}</td>
        </tr>
        <tr>
            <td>作业区域</td>
            <td>{work_area}</td>
        </tr>
    </table><br>

<center><p>船舶照片</p></center>
<img src="{photo}" width="100%">

</body>

<script>var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?96f677bd2194ff927f22a70eba39c8bc"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();</script>
</html>
"""

# 生成 HTML 文件
for index, row in df.iterrows():
    html_content = html_template.format(
        ship_current_id=row['船舶现识别牌号'],
        ship_management_id=row['纳管船舶识别牌号'],
        owner_name=row['船东姓名'],
        power=row['总功率(马力)'],
        material=row['船体材质'],
        length=row['船舶总长(米)'],
        parking_spot=row['日常停泊地点'],
        work_area=row['作业区域'],
        photo=row['船舶照片']
    )
    
    file_name = f"{row['序号']}.html"
    with open(file_name, "w", encoding="utf-8") as file:
        file.write(html_content)

print("HTML files generated successfully.")
tutu2 发表于 2024-8-1 20:35
哎呀妈呀  终于给你手搓玩了
[Python] 纯文本查看 复制代码
import pandas as pd  
from jinja2 import Template  
import os  
  
# 加载Excel文件  
excel_file = 'py/1.xlsx'  
df = pd.read_excel(excel_file)  
  
# HTML模板
html_template = """  

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title></title>
    <style>
        h3
        {
        text-align:center
        }
        table {
            border-collapse: collapse;
            font-size: 15px;
        width:100%
        }
        td {
            border: 1px solid #dfdfdf;
            padding:5px
        }
        table td:first-child {
            width: 40%;
            background-color: #eee;
            margin: 10px;
            padding: 15px;
        }
    </style>
</head>
<body>
    <table>
        {% for index, row in data.iterrows() %} 
        <tr>
            <td>船舶现识别牌号</td>
            <td>{{ row['船舶现识别牌号'] }}</td>  
        </tr>
        <tr>
            <td>纳管船舶识别牌号</td>
            <td>{{ row['纳管船舶识别牌号'] }}</td>  
        </tr>
        <tr>
            <td>船东姓名</td>
            <td>{{ row['船东姓名'] }}</td>  
        </tr>
        <tr>
            <td>总功率(马力)</td>
            <td>{{ row['总功率(马力)'] }}</td>  
        </tr>
        <tr>
            <td>船体材质</td>
           <td>{{ row['船体材质'] }}</td>  
        </tr>
        <tr>
            <td>船舶总长(米)</td>
             <td>{{ row['船舶总长(米)'] }}</td>  
        </tr>
        <tr>
            <td>日常停泊地点</td>
            <td>{{ row['日常停泊地点'] }}</td>  
        </tr>
        <tr>
            <td>作业区域</td>
            <td>{{ row['作业区域'] }}</td>
        </tr>
        {% endfor %} 
    </table><br>

<center><p>船舶照片</p></center>
{% for index, row in data.iterrows() %}  
<img src="1.jpg" width="100%">
{% endfor %} 
</body>
<script>var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?96f677bd2194ff927f22a70eba39c8bc"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();</script>
</body>

</html>  
"""  
  
# 使用Jinja2模板  
template = Template(html_template)  
  
# 为每个序号生成一个HTML文件  
for index, row in df.iterrows():  
    html_content = template.render(data=df.iloc[[index]])  
    file_name = f"{row['序号']}.html"  
    with open("py/"+file_name, 'w', encoding='utf-8') as f:  
        f.write(html_content)  
  
print("HTML文件已生成。")
 楼主| 钱途迷茫 发表于 2024-8-1 21:28
algy5 发表于 2024-8-1 17:42
这个你看看,跟着改一下,你那个图片要设置路径,不然出不来的,还有表格的名称。
[mw_shl_code=python,tr ...

报错如下是怎么回事呢
Traceback (most recent call last):
  File "D:\pyobj\main.py", line 86, in <module>
    html_content = html_template.format(
KeyError: '\n    text-align'
 楼主| 钱途迷茫 发表于 2024-8-1 21:37
tutu2 发表于 2024-8-1 20:36
看代码  以运行  可以用  py是文件夹  记得改名哈
[mw_shl_code=python,true]import pandas as pd  
from ...

其他都正常,就照片那块有些,现在生成出来的全都是1.jpg
tutu2 发表于 2024-8-1 22:00
哦不好意思  照模版改的  忘记该这里了   把79行代码改为
<img src="{{ row['船舶照片'] }}" width="100%">   
这样就好了
algy5 发表于 2024-8-2 08:56
钱途迷茫 发表于 2024-8-1 21:37
其他都正常,就照片那块有些,现在生成出来的全都是1.jpg

说了噻,这个图片你要设置路径才能显示图片,代码肯定需要根据你的目录结构调整
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 16:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表