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

使用Python進(jìn)行Excel文件xls/xlsx/xsv格式互相轉(zhuǎn)換

 更新時間:2025年11月26日 09:18:37   作者:諸神緘默不語  
本文介紹了如何使用Python進(jìn)行Excel文件格式的互相轉(zhuǎn)換,包括xls到xlsx、xlsx到xls、xls到csv、xlsx到csv、csv到xls以及csv到xlsx的轉(zhuǎn)換方法,轉(zhuǎn)換過程中需要注意文件路徑的修改以及文件名沖突的處理,需要的朋友可以參考下

1. Excel文件處理 - 將xls文件轉(zhuǎn)換為xlsx

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

Python版本需要為3.8-3.14(pywin32的要求)
通過pip下載pywin32:

pip install pywin32

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_xls_to_xlsx(xls_path: str) -> str:
    """
    將單個xls文件轉(zhuǎn)換為xlsx格式,并返回轉(zhuǎn)換后的文件路徑
    
    Args:
        xls_path (str): xls文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的xlsx文件路徑
        
    Raises:
        FileNotFoundError: 如果文件不存在
        ValueError: 如果文件不是xls格式或路徑無效
        Exception: 轉(zhuǎn)換過程中的其他錯誤
    """
    # 參數(shù)驗證
    if not xls_path or not isinstance(xls_path, str):
        raise ValueError("文件路徑不能為空且必須是字符串")
    
    # 檢查文件是否存在
    if not os.path.exists(xls_path):
        raise FileNotFoundError(f"文件不存在: {xls_path}")
    
    # 檢查文件擴(kuò)展名
    if not xls_path.lower().endswith('.xls'):
        raise ValueError(f"文件不是xls格式: {xls_path}")
    
    # 檢查文件是否被占用(臨時文件)
    if os.path.basename(xls_path).startswith('~'):
        raise ValueError(f"文件可能是臨時文件: {xls_path}")
    
    # 檢查文件大?。ū苊馓幚砜瘴募驌p壞文件)
    file_size = os.path.getsize(xls_path)
    if file_size == 0:
        raise ValueError(f"文件為空: {xls_path}")
    
    excel = None
    workbook = None
    
    try:
        # 創(chuàng)建Excel應(yīng)用實例
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False  # 不顯示警告對話框
        
        # 打開工作簿
        workbook = excel.Workbooks.Open(xls_path)
        
        # 生成新的xlsx文件路徑
        base_path = os.path.splitext(xls_path)[0]
        new_path = base_path + ".xlsx"
        
        # 處理文件名沖突
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).xlsx"
        
        # 保存為xlsx格式(51代表xlsx格式)
        workbook.SaveAs(new_path, 51)
        
        # 驗證轉(zhuǎn)換后的文件
        if not os.path.exists(new_path):
            raise Exception("轉(zhuǎn)換后的文件未創(chuàng)建成功")
        
        # 檢查轉(zhuǎn)換后的文件大小
        if os.path.getsize(new_path) == 0:
            raise Exception("轉(zhuǎn)換后的文件為空")
        
        return new_path
        
    except Exception as e:
        # 清理可能創(chuàng)建的部分文件
        if 'new_path' in locals() and os.path.exists(new_path):
            try:
                os.remove(new_path)
            except:
                pass
        raise e
        
    finally:
        # 確保資源被正確釋放
        try:
            if workbook:
                workbook.Close()
        except:
            pass
            
        try:
            if excel:
                excel.Quit()
        except:
            pass


def main():
    """主函數(shù):轉(zhuǎn)換單個文件并顯示結(jié)果"""
    # 直接在代碼中設(shè)置要轉(zhuǎn)換的文件路徑
    xls_file_path = r"D:\excel_files\example.xls"  # 修改為您要轉(zhuǎn)換的xls文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {xls_file_path}")
        
        # 轉(zhuǎn)換文件
        xlsx_path = convert_xls_to_xlsx(xls_file_path)
        
        # 輸出成功信息
        print("\n" + "="*50)
        print("? 文件轉(zhuǎn)換成功!")
        print(f"原始文件: {xls_file_path}")
        print(f"轉(zhuǎn)換后文件: {xlsx_path}")
        print(f"文件大小: {os.path.getsize(xlsx_path)} 字節(jié)")
        print("="*50)
        
    except FileNotFoundError as e:
        print(f"? 錯誤: {e}")
        print("請檢查文件路徑是否正確")
    except ValueError as e:
        print(f"? 錯誤: {e}")
        print("請確保文件是有效的xls文檔")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")
        print("可能是Excel應(yīng)用問題或文件損壞")


if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.xls為您需要轉(zhuǎn)換的xls文件路徑即可。轉(zhuǎn)換后的xlsx文件與xls文件同名(如果已經(jīng)存在了同名xlsx文件,將加上(count)后綴以避免沖突)

核心功能代碼

xls文件轉(zhuǎn)換為xlsx文件的核心功能代碼為:

import os
from win32com import client as wc

excel = wc.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False

workbook = excel.Workbooks.Open(xls_path)
workbook.SaveAs(new_path, 51)
workbook.Close()

excel.Quit()

將xls_path對應(yīng)的Excel工作簿轉(zhuǎn)換為new_path對應(yīng)的Excel工作簿。需要注意的是這個代碼本身xls_path可以是xls/xlsx類型的Excel文件路徑,Python代碼本身只是起到了讀取Excel文件的作用。

workbook.SaveAs(file_name, file_format)中file_format這個參數(shù)表示另存為文件的格式。

  • 51: xlOpenXMLWorkbook - 不含宏的xlsx格式
  • 52: xlOpenXMLWorkbookMacroEnabled - 含宏的xlsm格式
  • 56: xlExcel8 - Excel 97-2003的xls格式
  • 6: xlCSV - CSV格式
  • 62: xlCSVUTF8 - UTF-8編碼的CSV格式
  • 22: xlTextMSDOS - MS-DOS文本格式
  • 42: xlUnicodeText - Unicode文本格式

如果原xls文件包含宏,需要使用52格式保存為xlsm文件。

2. Excel文件處理 - 將xlsx文件轉(zhuǎn)換為xls

準(zhǔn)備環(huán)境和核心功能代碼與項目3相同。

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_xlsx_to_xls(xlsx_path: str) -> str:
    """
    將單個xlsx文件轉(zhuǎn)換為xls格式
    
    Args:
        xlsx_path (str): xlsx文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的xls文件路徑
    """
    if not os.path.exists(xlsx_path):
        raise FileNotFoundError(f"文件不存在: {xlsx_path}")
    
    if not xlsx_path.lower().endswith('.xlsx'):
        raise ValueError(f"文件不是xlsx格式: {xlsx_path}")
    
    excel = None
    workbook = None
    
    try:
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False
        
        workbook = excel.Workbooks.Open(xlsx_path)
        
        base_path = os.path.splitext(xlsx_path)[0]
        new_path = base_path + ".xls"
        
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).xls"
        
        # 56: xlExcel8 (Excel 97-2003格式)
        workbook.SaveAs(new_path, 56)
        
        return new_path
        
    finally:
        if workbook:
            workbook.Close()
        if excel:
            excel.Quit()

def main():
    xlsx_file_path = r"D:\excel_files\example.xlsx"  # 修改為您的xlsx文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {xlsx_file_path}")
        xls_path = convert_xlsx_to_xls(xlsx_file_path)
        print(f"? 轉(zhuǎn)換成功: {xls_path}")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")

if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.xlsx為您需要轉(zhuǎn)換的xlsx文件路徑即可。轉(zhuǎn)換后的xls文件與xlsx文件同名(如果已經(jīng)存在了同名xls文件,將加上(count)后綴以避免沖突)

3. Excel文件處理 - 將xls文件轉(zhuǎn)換為csv

準(zhǔn)備環(huán)境和核心功能代碼與項目3相同。

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_xls_to_csv(xls_path: str) -> str:
    """
    將單個xls文件轉(zhuǎn)換為csv格式
    
    Args:
        xls_path (str): xls文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的csv文件路徑
    """
    if not os.path.exists(xls_path):
        raise FileNotFoundError(f"文件不存在: {xls_path}")
    
    if not xls_path.lower().endswith('.xls'):
        raise ValueError(f"文件不是xls格式: {xls_path}")
    
    excel = None
    workbook = None
    
    try:
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False
        
        workbook = excel.Workbooks.Open(xls_path)
        
        base_path = os.path.splitext(xls_path)[0]
        new_path = base_path + ".csv"
        
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).csv"
        
        # 6: xlCSV (CSV格式)
        workbook.SaveAs(new_path, 6)
        
        return new_path
        
    finally:
        if workbook:
            workbook.Close()
        if excel:
            excel.Quit()

def main():
    xls_file_path = r"D:\excel_files\example.xls"  # 修改為您的xls文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {xls_file_path}")
        csv_path = convert_xls_to_csv(xls_file_path)
        print(f"? 轉(zhuǎn)換成功: {csv_path}")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")

if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.xls為您需要轉(zhuǎn)換的xls文件路徑即可。轉(zhuǎn)換后的csv文件與xls文件同名(如果已經(jīng)存在了同名csv文件,將加上(count)后綴以避免沖突)

4. Excel文件處理 - 將xlsx文件轉(zhuǎn)換為csv

準(zhǔn)備環(huán)境和核心功能代碼與項目3相同。

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_xlsx_to_csv(xlsx_path: str) -> str:
    """
    將單個xlsx文件轉(zhuǎn)換為csv格式
    
    Args:
        xlsx_path (str): xlsx文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的csv文件路徑
    """
    if not os.path.exists(xlsx_path):
        raise FileNotFoundError(f"文件不存在: {xlsx_path}")
    
    if not xlsx_path.lower().endswith('.xlsx'):
        raise ValueError(f"文件不是xlsx格式: {xlsx_path}")
    
    excel = None
    workbook = None
    
    try:
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False
        
        workbook = excel.Workbooks.Open(xlsx_path)
        
        base_path = os.path.splitext(xlsx_path)[0]
        new_path = base_path + ".csv"
        
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).csv"
        
        # 6: xlCSV (CSV格式)
        workbook.SaveAs(new_path, 6)
        
        return new_path
        
    finally:
        if workbook:
            workbook.Close()
        if excel:
            excel.Quit()

def main():
    xlsx_file_path = r"D:\excel_files\example.xlsx"  # 修改為您的xlsx文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {xlsx_file_path}")
        csv_path = convert_xlsx_to_csv(xlsx_file_path)
        print(f"? 轉(zhuǎn)換成功: {csv_path}")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")

if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.xlsx為您需要轉(zhuǎn)換的xlsx文件路徑即可。轉(zhuǎn)換后的csv文件與xlsx文件同名(如果已經(jīng)存在了同名csv文件,將加上(count)后綴以避免沖突)

5. Excel文件處理 - 將csv文件轉(zhuǎn)換為xls

準(zhǔn)備環(huán)境和核心功能代碼與項目3相同。

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_csv_to_xls(csv_path: str) -> str:
    """
    將單個csv文件轉(zhuǎn)換為xls格式
    
    Args:
        csv_path (str): csv文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的xls文件路徑
    """
    if not os.path.exists(csv_path):
        raise FileNotFoundError(f"文件不存在: {csv_path}")
    
    if not csv_path.lower().endswith('.csv'):
        raise ValueError(f"文件不是csv格式: {csv_path}")
    
    excel = None
    workbook = None
    
    try:
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False
        
        workbook = excel.Workbooks.Open(csv_path)
        
        base_path = os.path.splitext(csv_path)[0]
        new_path = base_path + ".xls"
        
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).xls"
        
        # 56: xlExcel8 (Excel 97-2003格式)
        workbook.SaveAs(new_path, 56)
        
        return new_path
        
    finally:
        if workbook:
            workbook.Close()
        if excel:
            excel.Quit()

def main():
    csv_file_path = r"D:\excel_files\example.csv"  # 修改為您的csv文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {csv_file_path}")
        xls_path = convert_csv_to_xls(csv_file_path)
        print(f"? 轉(zhuǎn)換成功: {xls_path}")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")

if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.csv為您需要轉(zhuǎn)換的csv文件路徑即可。轉(zhuǎn)換后的xls文件與csv文件同名(如果已經(jīng)存在了同名xls文件,將加上(count)后綴以避免沖突)

6. Excel文件處理 - 將csv文件轉(zhuǎn)換為xlsx

準(zhǔn)備環(huán)境和核心功能代碼與項目3相同。

復(fù)制即可運行的完整代碼

import os
from win32com import client as wc

def convert_csv_to_xlsx(csv_path: str) -> str:
    """
    將單個csv文件轉(zhuǎn)換為xlsx格式
    
    Args:
        csv_path (str): csv文件路徑
        
    Returns:
        str: 轉(zhuǎn)換后的xlsx文件路徑
    """
    if not os.path.exists(csv_path):
        raise FileNotFoundError(f"文件不存在: {csv_path}")
    
    if not csv_path.lower().endswith('.csv'):
        raise ValueError(f"文件不是csv格式: {csv_path}")
    
    excel = None
    workbook = None
    
    try:
        excel = wc.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False
        
        workbook = excel.Workbooks.Open(csv_path)
        
        base_path = os.path.splitext(csv_path)[0]
        new_path = base_path + ".xlsx"
        
        count = 0
        while os.path.exists(new_path):
            count += 1
            new_path = f"{base_path}({count}).xlsx"
        
        # 51: xlOpenXMLWorkbook (不含宏的xlsx)
        workbook.SaveAs(new_path, 51)
        
        return new_path
        
    finally:
        if workbook:
            workbook.Close()
        if excel:
            excel.Quit()

def main():
    csv_file_path = r"D:\excel_files\example.csv"  # 修改為您的csv文件路徑
    
    try:
        print(f"開始轉(zhuǎn)換文件: {csv_file_path}")
        xlsx_path = convert_csv_to_xlsx(csv_file_path)
        print(f"? 轉(zhuǎn)換成功: {xlsx_path}")
    except Exception as e:
        print(f"? 轉(zhuǎn)換失敗: {e}")

if __name__ == "__main__":
    main()

將代碼復(fù)制到你的Python編輯器中,并修改D:\excel_files\example.csv為您需要轉(zhuǎn)換的csv文件路徑即可。轉(zhuǎn)換后的xlsx文件與csv文件同名(如果已經(jīng)存在了同名xlsx文件,將加上(count)后綴以避免沖突)

以上就是使用Python進(jìn)行Excel文件xls/xlsx/xsv格式互相轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Python文件格式xls/xlsx/xsv互轉(zhuǎn)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 多版本python的pip 升級后, pip2 pip3 與python版本失配解決方法

    多版本python的pip 升級后, pip2 pip3 與python版本失配解決方法

    在本篇文章里小編給大家整理的是關(guān)于多版本python的pip 升級后, pip2 pip3 與python版本失配的解決方法內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-09-09
  • Python利用pynimate實現(xiàn)制作動態(tài)排序圖

    Python利用pynimate實現(xiàn)制作動態(tài)排序圖

    這篇文章主要為大家詳細(xì)介紹了Python如何利用pynimate實現(xiàn)制作動態(tài)排序圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • 在Django的模型中添加自定義方法的示例

    在Django的模型中添加自定義方法的示例

    這篇文章主要介紹了在Django的模型中添加自定義方法的示例,Django是Python豐富多彩的web開發(fā)框架中最具人氣的一個,需要的朋友可以參考下
    2015-07-07
  • Python中Dataframe數(shù)據(jù)排序方法(含實例講解)

    Python中Dataframe數(shù)據(jù)排序方法(含實例講解)

    在進(jìn)行數(shù)據(jù)分析操作時,經(jīng)常需要對數(shù)據(jù)按照某行某列排序,或者按照多行多列排序,以及按照索引值排序等等,下面這篇文章主要給大家介紹了關(guān)于Python中Dataframe數(shù)據(jù)排序方法的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 使用Python 正則匹配兩個特定字符之間的字符方法

    使用Python 正則匹配兩個特定字符之間的字符方法

    今天小編就為大家分享一篇使用Python 正則匹配兩個特定字符之間的字符方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 如何利用python?turtle繪圖自定義畫布背景顏色

    如何利用python?turtle繪圖自定義畫布背景顏色

    Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標(biāo)系原點,(0,0)位置開始,這篇文章主要給大家介紹了關(guān)于如何利用python?turtle繪圖自定義畫布背景顏色的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • selenium鼠標(biāo)操作實戰(zhàn)案例詳解

    selenium鼠標(biāo)操作實戰(zhàn)案例詳解

    在實際場景中,會有單擊、長時間單擊、雙擊、右鍵、拖拽等鼠標(biāo)操作,selenium提供了名為ActionChains的類來處理這些操作,下面這篇文章主要給大家介紹了關(guān)于selenium鼠標(biāo)操作實戰(zhàn)案例的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 基于Python安裝pyecharts所遇的問題及解決方法

    基于Python安裝pyecharts所遇的問題及解決方法

    今天小編就為大家分享一篇基于Python安裝pyecharts所遇的問題及解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python全景系列之?dāng)?shù)據(jù)類型大盤點

    Python全景系列之?dāng)?shù)據(jù)類型大盤點

    這篇文章主要為大家介紹了Python全景系列之?dāng)?shù)據(jù)類型的盤點解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 深入解析Python的Tornado框架中內(nèi)置的模板引擎

    深入解析Python的Tornado框架中內(nèi)置的模板引擎

    模板引擎是Web開發(fā)框架中負(fù)責(zé)前端展示的關(guān)鍵,這里我們就來以實例深入解析Python的Tornado框架中內(nèi)置的模板引擎,來學(xué)習(xí)如何編寫Tonardo的模板.
    2016-07-07

最新評論

汶川县| 靖安县| 奎屯市| 长宁县| 思南县| 客服| 盐边县| 韶山市| 扬州市| 图们市| 馆陶县| 离岛区| 永春县| 丰县| 洪洞县| 湟中县| 延吉市| 津市市| 高州市| 白城市| 常山县| 浑源县| 左云县| 泾源县| 陇川县| 独山县| 肥乡县| 轮台县| 西充县| 科尔| 博乐市| 南宁市| 新疆| 阳曲县| 农安县| 健康| 静海县| 曲靖市| 开封县| 庆安县| 崇信县|