最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python代碼實(shí)現(xiàn)將HTML轉(zhuǎn)換為Excel

 更新時(shí)間:2026年05月26日 08:13:14   作者:用戶033212666367  
在處理網(wǎng)頁(yè)數(shù)據(jù)、在線報(bào)表或 HTML 格式的文檔時(shí),將其轉(zhuǎn)換為 Excel 格式是一項(xiàng)非常實(shí)用的技能,本文將詳細(xì)介紹如何使用 Spire.XLS for Python 庫(kù)將 HTML 內(nèi)容轉(zhuǎn)換為 Excel 工作簿,希望對(duì)大家有所幫助

在處理網(wǎng)頁(yè)數(shù)據(jù)、在線報(bào)表或 HTML 格式的文檔時(shí),將其轉(zhuǎn)換為 Excel 格式是一項(xiàng)非常實(shí)用的技能。Excel 提供了強(qiáng)大的數(shù)據(jù)處理、分析和可視化功能,使得原本僅用于展示的 HTML 表格數(shù)據(jù)變得更加靈活和可操作。通過(guò)程序化方式實(shí)現(xiàn) HTML 到 Excel 的轉(zhuǎn)換,可以自動(dòng)化數(shù)據(jù)采集、報(bào)表整理和數(shù)據(jù)遷移等工作流程。

本文將詳細(xì)介紹如何使用 Spire.XLS for Python 庫(kù)將 HTML 內(nèi)容轉(zhuǎn)換為 Excel 工作簿。我們將涵蓋從 HTML 文件直接轉(zhuǎn)換、HTML 字符串插入單元格、以及實(shí)際應(yīng)用場(chǎng)景中的最佳實(shí)踐,幫助你輕松實(shí)現(xiàn)網(wǎng)頁(yè)數(shù)據(jù)到電子表格的轉(zhuǎn)換。

環(huán)境準(zhǔn)備

在開(kāi)始之前,你需要安裝 Spire.XLS for Python 庫(kù)。可以使用 pip 命令進(jìn)行安裝:

pip install Spire.XLS

安裝完成后,你就可以在 Python 項(xiàng)目中使用該庫(kù)來(lái)處理 HTML 與 Excel 之間的轉(zhuǎn)換了。

HTML 轉(zhuǎn) Excel 的應(yīng)用場(chǎng)景

在實(shí)際工作中,HTML 轉(zhuǎn) Excel 有多種典型應(yīng)用場(chǎng)景:

  • 網(wǎng)頁(yè)數(shù)據(jù)抓取:將網(wǎng)頁(yè)上的表格數(shù)據(jù)提取并保存為 Excel 格式
  • 報(bào)表轉(zhuǎn)換:將 HTML 格式的報(bào)表轉(zhuǎn)換為可編輯的 Excel 文件
  • 數(shù)據(jù)遷移:從基于 Web 的系統(tǒng)導(dǎo)出數(shù)據(jù)并轉(zhuǎn)換為 Excel 進(jìn)行分析
  • 檔案整理:將歷史 HTML 文檔中的表格數(shù)據(jù)整理為結(jié)構(gòu)化電子表格
  • 自動(dòng)化處理:在數(shù)據(jù)處理流水線中自動(dòng)將 HTML 輸入轉(zhuǎn)換為 Excel 輸出

Spire.XLS for Python 提供了簡(jiǎn)潔的 API 來(lái)滿足這些轉(zhuǎn)換需求,讓你能夠高效地處理 HTML 數(shù)據(jù)。

從 HTML 文件轉(zhuǎn)換為 Excel

最基本的轉(zhuǎn)換操作是直接將 HTML 文件加載并保存為 Excel 格式。以下示例展示了如何完成這一基本任務(wù):

from spire.xls import *
from spire.xls.common import *

def ConvertHtmlToExcel():
    """將 HTML 文件轉(zhuǎn)換為 Excel"""
    inputFile = "/input/表格.html"
    outputFile = "/output/Html轉(zhuǎn)Excel.xlsx"
    
    # 創(chuàng)建工作簿對(duì)象
    workbook = Workbook()
    
    # 從 HTML 文件加載內(nèi)容
    workbook.LoadFromHtml(inputFile)
    
    # 保存為 Excel 格式(Excel 2013)
    workbook.SaveToFile(outputFile, ExcelVersion.Version2013)

if __name__ == "__main__":
    ConvertHtmlToExcel()

在這個(gè)示例中,我們使用 LoadFromHtml() 方法直接加載 HTML 文件,然后調(diào)用 SaveToFile() 方法將其保存為 Excel 格式。這種方法適用于包含表格結(jié)構(gòu)的完整 HTML 文件,Spire.XLS 會(huì)自動(dòng)解析 HTML 中的 <table> 標(biāo)簽并將其轉(zhuǎn)換為 Excel 工作表中的行列結(jié)構(gòu)。

需要注意的是,HTML 中的樣式、合并單元格等格式信息也會(huì)被盡可能保留,但某些復(fù)雜的 CSS 樣式可能無(wú)法完全映射到 Excel 格式中。

將 HTML 字符串插入單元格

有時(shí)你可能不需要轉(zhuǎn)換整個(gè) HTML 文件,而是希望將一段 HTML 代碼插入到 Excel 的特定單元格中。這種情況下,可以使用單元格的 HtmlString 屬性。以下是具體實(shí)現(xiàn):

from spire.xls import *
from spire.xls.common import *

def InsertHtmlIntoCell():
    """將 HTML 字符串插入 Excel 單元格"""
    outputFile = "InsertHtmlStringIntoCell.xlsx"
    
    # 創(chuàng)建工作簿
    workbook = Workbook()
    
    # 獲取第一個(gè)工作表
    sheet = workbook.Worksheets[0]
    
    # 定義 HTML 字符串
    htmlCode = "<div>第一行<strong>第二行(加粗)</strong>第三行</div>"
    
    # 將 HTML 字符串插入到 A1 單元格
    cell_range = sheet["A1"]
    cell_range.HtmlString = htmlCode
    
    # 保存文件
    workbook.SaveToFile(outputFile, ExcelVersion.Version2013)
    workbook.Dispose()
    
    print(f"HTML 字符串已插入,Excel 文件已保存至: {outputFile}")

if __name__ == "__main__":
    InsertHtmlIntoCell()

這個(gè)示例展示了如何將 HTML 字符串直接賦值給單元格的 HtmlString 屬性。Spire.XLS 會(huì)解析 HTML 標(biāo)簽并在單元格內(nèi)渲染格式化文本。在這個(gè)例子中,<strong> 標(biāo)簽會(huì)使文本加粗,<div> 標(biāo)簽會(huì)創(chuàng)建換行效果。

這種方法特別適合需要在 Excel 中保留富文本格式的場(chǎng)景,例如從數(shù)據(jù)庫(kù)中提取帶有 HTML 標(biāo)記的內(nèi)容并導(dǎo)入到 Excel 中。

實(shí)用技巧與高級(jí)應(yīng)用

處理包含多個(gè)表格的 HTML 文件

當(dāng) HTML 文件中包含多個(gè)表格時(shí),Spire.XLS 會(huì)將每個(gè)表格轉(zhuǎn)換為單獨(dú)的工作表。你可以通過(guò)以下方式進(jìn)行控制:

from spire.xls import *
from spire.xls.common import *

def ConvertMultiTableHtml():
    """轉(zhuǎn)換包含多個(gè)表格的 HTML 文件"""
    inputFile = "./Demos/Data/MultiTable.html"
    outputFile = "MultiTableExcel.xlsx"
    
    # 創(chuàng)建工作簿并加載 HTML
    workbook = Workbook()
    workbook.LoadFromHtml(inputFile)
    
    # 遍歷所有工作表并重命名
    for i in range(workbook.Worksheets.Count):
        sheet = workbook.Worksheets[i]
        sheet.Name = f"表格_{i + 1}"
        
        # 自動(dòng)調(diào)整列寬以適應(yīng)內(nèi)容
        sheet.AllocatedRange.AutoFitColumns()
    
    # 保存文件
    workbook.SaveToFile(outputFile, ExcelVersion.Version2013)
    workbook.Dispose()
    
    print(f"多表格 HTML 轉(zhuǎn)換完成,文件已保存至: {outputFile}")

if __name__ == "__main__":
    ConvertMultiTableHtml()

這個(gè)示例展示了如何處理包含多個(gè)表格的 HTML 文件。加載后,每個(gè) HTML 表格會(huì)成為獨(dú)立的工作表。通過(guò)遍歷工作表集合,你可以為每個(gè)工作表設(shè)置有意義的名稱,并自動(dòng)調(diào)整列寬以優(yōu)化顯示效果。

從 URL 加載 HTML 并轉(zhuǎn)換

在實(shí)際應(yīng)用中,你可能需要直接從網(wǎng)頁(yè) URL 獲取 HTML 內(nèi)容并轉(zhuǎn)換為 Excel。以下是一個(gè)完整的示例:

import urllib.request
from spire.xls import *
from spire.xls.common import *
import tempfile
import os

def ConvertUrlToExcel(url, output_file):
    """從 URL 加載 HTML 并轉(zhuǎn)換為 Excel"""
    
    # 下載 HTML 內(nèi)容
    print(f"正在下載: {url}")
    response = urllib.request.urlopen(url)
    html_content = response.read().decode('utf-8')
    
    # 創(chuàng)建臨時(shí) HTML 文件
    with tempfile.NamedTemporaryFile(mode='w', suffix='.html', delete=False, encoding='utf-8') as temp_file:
        temp_file.write(html_content)
        temp_html_path = temp_file.name
    
    try:
        # 創(chuàng)建工作簿并加載 HTML
        workbook = Workbook()
        workbook.LoadFromHtml(temp_html_path)
        
        # 自動(dòng)調(diào)整所有工作表的列寬
        for sheet in workbook.Worksheets:
            sheet.AllocatedRange.AutoFitColumns()
        
        # 保存為 Excel
        workbook.SaveToFile(output_file, ExcelVersion.Version2013)
        workbook.Dispose()
        
        print(f"轉(zhuǎn)換完成,Excel 文件已保存至: {output_file}")
        
    finally:
        # 清理臨時(shí)文件
        if os.path.exists(temp_html_path):
            os.remove(temp_html_path)

def main():
    # 示例:從網(wǎng)頁(yè)轉(zhuǎn)換(請(qǐng)?zhí)鎿Q為實(shí)際 URL)
    # ConvertUrlToExcel(
    #     "https://example.com/data-table.html",
    #     "WebData.xlsx"
    # )
    print("URL 轉(zhuǎn)換函數(shù)已定義,取消注釋 main() 中的代碼即可使用")

if __name__ == "__main__":
    main()

這個(gè)示例展示了如何從網(wǎng)絡(luò) URL 獲取 HTML 內(nèi)容并轉(zhuǎn)換為 Excel。首先使用 urllib 下載 HTML 內(nèi)容,然后創(chuàng)建臨時(shí)文件供 Spire.XLS 加載,最后清理臨時(shí)文件。這種方法非常適合自動(dòng)化數(shù)據(jù)采集和處理流程。

批量轉(zhuǎn)換 HTML 文件

如果你需要處理多個(gè) HTML 文件,可以使用以下批量轉(zhuǎn)換工具類:

import os
from spire.xls import *
from spire.xls.common import *

class HtmlToExcelConverter:
    """HTML 轉(zhuǎn) Excel 批量轉(zhuǎn)換器"""
    
    def __init__(self, output_folder=None):
        self.output_folder = output_folder or "./Excel_Output"
        
        # 創(chuàng)建輸出文件夾
        if not os.path.exists(self.output_folder):
            os.makedirs(self.output_folder)
    
    def convert_single_file(self, input_file, output_file=None):
        """轉(zhuǎn)換單個(gè) HTML 文件為 Excel"""
        try:
            workbook = Workbook()
            workbook.LoadFromHtml(input_file)
            
            # 自動(dòng)調(diào)整所有工作表的列寬
            for sheet in workbook.Worksheets:
                sheet.AllocatedRange.AutoFitColumns()
            
            if output_file is None:
                base_name = os.path.splitext(os.path.basename(input_file))[0]
                output_file = os.path.join(self.output_folder, f"{base_name}.xlsx")
            
            workbook.SaveToFile(output_file, ExcelVersion.Version2013)
            workbook.Dispose()
            
            print(f"? 轉(zhuǎn)換成功: {os.path.basename(input_file)}")
            return True
            
        except Exception as e:
            print(f"? 轉(zhuǎn)換失敗 {os.path.basename(input_file)}: {str(e)}")
            return False
    
    def batch_convert(self, input_folder):
        """批量轉(zhuǎn)換文件夾中的所有 HTML 文件"""
        html_files = []
        
        # 查找所有 HTML 文件
        for filename in os.listdir(input_folder):
            if filename.lower().endswith(('.html', '.htm')):
                html_files.append(os.path.join(input_folder, filename))
        
        if not html_files:
            print(f"在 {input_folder} 中未找到 HTML 文件")
            return
        
        print(f"找到 {len(html_files)} 個(gè) HTML 文件,開(kāi)始轉(zhuǎn)換...")
        
        success_count = 0
        fail_count = 0
        
        for html_file in html_files:
            if self.convert_single_file(html_file):
                success_count += 1
            else:
                fail_count += 1
        
        print(f"\n轉(zhuǎn)換完成!")
        print(f"成功: {success_count} 個(gè)文件")
        print(f"失敗: {fail_count} 個(gè)文件")
        print(f"輸出目錄: {self.output_folder}")

def main():
    # 創(chuàng)建轉(zhuǎn)換器實(shí)例
    converter = HtmlToExcelConverter("./Excel_Output")
    
    # 批量轉(zhuǎn)換
    converter.batch_convert("./HTML_Files")
    
    # 或者轉(zhuǎn)換單個(gè)文件
    # converter.convert_single_file("./Data/Table.html")

if __name__ == "__main__":
    main()

這個(gè)工具類提供了單文件轉(zhuǎn)換和批量轉(zhuǎn)換功能,支持自動(dòng)調(diào)整列寬和錯(cuò)誤處理。你可以將其集成到數(shù)據(jù)處理流水線中,實(shí)現(xiàn)自動(dòng)化的 HTML 到 Excel 轉(zhuǎn)換。

轉(zhuǎn)換質(zhì)量?jī)?yōu)化建議

為了獲得最佳的 Excel 輸出效果,注意以下幾點(diǎn):

HTML 結(jié)構(gòu)要求

  • 確保 HTML 中的表格使用標(biāo)準(zhǔn)的 <table>、<tr><td> 標(biāo)簽
  • 避免使用過(guò)于復(fù)雜的嵌套表格結(jié)構(gòu)
  • 檢查 HTML 語(yǔ)法是否正確,避免標(biāo)簽未閉合

格式處理

  • 簡(jiǎn)單的 CSS 樣式(如字體加粗、顏色)通??梢员A?/li>
  • 復(fù)雜的布局和定位可能無(wú)法完全映射到 Excel
  • 圖片和多媒體元素不會(huì)被轉(zhuǎn)換

性能考慮

  • 大型 HTML 文件轉(zhuǎn)換時(shí)可能需要較長(zhǎng)時(shí)間
  • 批量處理時(shí)注意內(nèi)存使用情況
  • 轉(zhuǎn)換完成后及時(shí)調(diào)用 Dispose() 釋放資源

常見(jiàn)問(wèn)題與解決方案

問(wèn)題 1:轉(zhuǎn)換后的數(shù)據(jù)格式不正確

解決方案:檢查 HTML 表格結(jié)構(gòu)是否規(guī)范,確保使用正確的 <table> 標(biāo)簽。對(duì)于特殊數(shù)據(jù)類型(如日期、數(shù)字),可以在轉(zhuǎn)換后使用 Excel 的格式化工具進(jìn)行調(diào)整。

問(wèn)題 2:中文或其他特殊字符顯示異常

解決方案:確保 HTML 文件使用 UTF-8 編碼,并在加載時(shí)指定正確的編碼設(shè)置。可以在 HTML 文件的 <head> 部分添加 <meta charset="UTF-8"> 標(biāo)簽。

問(wèn)題 3:表格邊框或樣式丟失

解決方案:HTML 到 Excel 的轉(zhuǎn)換主要關(guān)注數(shù)據(jù)結(jié)構(gòu),樣式可能會(huì)簡(jiǎn)化。如果需要保留特定樣式,可以在轉(zhuǎn)換后使用 Spire.XLS 的格式化 API 重新應(yīng)用樣式。

總結(jié)

本文深入探討了利用 Spire.XLS for Python 將 HTML 轉(zhuǎn)換為 Excel 的核心技術(shù)與多種實(shí)現(xiàn)路徑。在實(shí)際應(yīng)用中,開(kāi)發(fā)者既可以通過(guò) LoadFromHtml() 方法直接將本地 HTML 文件或從特定 URL 下載的網(wǎng)頁(yè)源文件轉(zhuǎn)換為 Excel 工作薄,也可以借助單元格的 HtmlString 屬性將富文本字符串精準(zhǔn)嵌入特定區(qū)域;針對(duì)復(fù)雜的網(wǎng)頁(yè)結(jié)構(gòu),系統(tǒng)還會(huì)自動(dòng)將多個(gè) HTML 表格智能拆分為獨(dú)立的工作表進(jìn)行存儲(chǔ)。為了在網(wǎng)頁(yè)數(shù)據(jù)采集、報(bào)表自動(dòng)化及數(shù)據(jù)遷移等實(shí)戰(zhàn)場(chǎng)景中大幅提升工作效率,建議在開(kāi)發(fā)時(shí)建立封裝工具類以實(shí)現(xiàn)高效的批量處理,并嚴(yán)格注意 HTML 結(jié)構(gòu)的規(guī)范性與全局編碼設(shè)置。全面掌握并靈活運(yùn)用這些 HTML 轉(zhuǎn) Excel 的轉(zhuǎn)換技術(shù),不僅能幫助我們打破跨平臺(tái)數(shù)據(jù)格式的壁壘,更能為企業(yè)級(jí)自動(dòng)化數(shù)據(jù)流轉(zhuǎn)與精細(xì)化報(bào)表沉淀提供強(qiáng)有力的技術(shù)支撐。

到此這篇關(guān)于Python代碼實(shí)現(xiàn)將HTML轉(zhuǎn)換為Excel的文章就介紹到這了,更多相關(guān)Python HTML轉(zhuǎn)Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 七個(gè)Python必備的GUI庫(kù)

    七個(gè)Python必備的GUI庫(kù)

    這篇文章主要介紹了七個(gè)Python必備的GUI庫(kù),幫助大家更好的理解和學(xué)習(xí)使用python制作gui程序,感興趣的朋友可以了解下
    2021-04-04
  • python中pygame模塊用法實(shí)例

    python中pygame模塊用法實(shí)例

    這篇文章主要介紹了python中pygame模塊用法實(shí)例,通過(guò)圖形繪制來(lái)簡(jiǎn)單講述了pygame模塊的用法,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • Python入門教程(十二)Python列表

    Python入門教程(十二)Python列表

    這篇文章主要介紹了Python入門教程(十二)Python列表,Python是一門非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Tornado協(xié)程在python2.7如何返回值(實(shí)現(xiàn)方法)

    Tornado協(xié)程在python2.7如何返回值(實(shí)現(xiàn)方法)

    下面小編就為大家?guī)?lái)一篇Tornado協(xié)程在python2.7如何返回值(實(shí)現(xiàn)方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • python 繪制國(guó)旗的示例

    python 繪制國(guó)旗的示例

    這篇文章主要介紹了python 繪制國(guó)旗的示例,幫助大家利用python繪制,處理圖像,感興趣的朋友可以了解下
    2020-09-09
  • 使用 PyTorch-BigGraph 構(gòu)建和部署大規(guī)模圖嵌入的完整步驟

    使用 PyTorch-BigGraph 構(gòu)建和部署大規(guī)模圖嵌入的完整步驟

    本文深入探討了使用 PyTorch-BigGraph (PBG) 構(gòu)建和部署大規(guī)模圖嵌入的完整流程,涵蓋了從環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型配置與訓(xùn)練,到高級(jí)優(yōu)化技術(shù)、評(píng)估指標(biāo)、部署策略以及實(shí)際案例研究等各個(gè)方面,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • nonebot插件之chatgpt使用詳解

    nonebot插件之chatgpt使用詳解

    這篇文章主要為大家介紹了nonebot插件之chatgpt使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • LyScript實(shí)現(xiàn)內(nèi)存交換與差異對(duì)比的方法詳解

    LyScript實(shí)現(xiàn)內(nèi)存交換與差異對(duì)比的方法詳解

    LyScript?針對(duì)內(nèi)存讀寫函數(shù)的封裝功能并不多,只提供了內(nèi)存讀取和內(nèi)存寫入函數(shù)的封裝,本篇文章將繼續(xù)對(duì)API進(jìn)行封裝,實(shí)現(xiàn)一些在軟件逆向分析中非常實(shí)用的功能,需要的可以參考一下
    2022-08-08
  • 關(guān)于Python中*args和**kwargs的深入理解

    關(guān)于Python中*args和**kwargs的深入理解

    這篇文章主要給大家介紹了關(guān)于Python中*args和**kwargs的相關(guān)資料,*args和**kwargs代表的是變量, 變量前面的 *(星號(hào))才是必須的,也可以寫成*v和**vs;寫成*args和**kwargs只是一個(gè)常用的書寫方式,需要的朋友可以參考下
    2021-08-08
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,無(wú)序鏈表詳解

    Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,無(wú)序鏈表詳解

    這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

获嘉县| 黎平县| 望江县| 涞源县| 合江县| 启东市| 永济市| 德惠市| 临海市| 郁南县| 昌图县| 恩施市| 吴桥县| 河东区| 富宁县| 筠连县| 海伦市| 湖北省| 西藏| 科技| 南召县| 合作市| 固原市| 德庆县| 和林格尔县| 南华县| 彰化市| 水城县| 阜城县| 友谊县| 合作市| 阜南县| 墨玉县| 清镇市| 电白县| 仁怀市| 沐川县| 锡林浩特市| 黄平县| 项城市| 尼木县|