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

Python新手指南之如何讀寫(xiě)舊版Excel(.xls)格式文件

 更新時(shí)間:2026年01月07日 08:59:35   作者:小莊-Python辦公  
在數(shù)據(jù)處理的世界里,Excel 是最常見(jiàn)的文件格式之一,本教程將手把手教你如何使用 Python 系統(tǒng)化、專(zhuān)業(yè)地讀寫(xiě) .xls 文件,有需要的小伙伴可以了解下

在數(shù)據(jù)處理的世界里,Excel 是最常見(jiàn)的文件格式之一。雖然現(xiàn)在的標(biāo)準(zhǔn)是 .xlsx(基于 XML 的較新格式),但在很多傳統(tǒng)行業(yè)、舊系統(tǒng)導(dǎo)出數(shù)據(jù)或歷史文檔中,我們?nèi)匀粫?huì)頻繁遇到 .xls 格式(Excel 97-2003 工作簿)。

對(duì)于 Python 初學(xué)者來(lái)說(shuō),處理這種“古老”的格式往往會(huì)遇到一些坑(比如現(xiàn)代庫(kù)不支持)。本教程將手把手教你如何使用 Python 系統(tǒng)化、專(zhuān)業(yè)地讀寫(xiě) .xls 文件。

1. 準(zhǔn)備工作:環(huán)境與依賴(lài)庫(kù)

在開(kāi)始寫(xiě)代碼之前,我們需要理解 Python 處理 Excel 的生態(tài)系統(tǒng)。

  • Pandas: 這是 Python 數(shù)據(jù)分析的神器。我們將主要通過(guò)它來(lái)操作數(shù)據(jù),因?yàn)樗庋b了底層的復(fù)雜操作,非常適合初學(xué)者。
  • xlrd: 這是一個(gè)專(zhuān)門(mén)用于讀取 .xls 文件的引擎。
  • xlwt: 這是一個(gè)專(zhuān)門(mén)用于寫(xiě)入 .xls 文件的引擎。

注意:目前流行的 openpyxl 庫(kù)僅支持 .xlsx 格式,不支持 .xls。因此,為了處理舊格式,我們必須安裝 xlrdxlwt。

安裝步驟

打開(kāi)你的終端(Terminal)或命令提示符(CMD),運(yùn)行以下命令安裝所需的庫(kù):

pip install pandas xlrd xlwt

安裝完成后,我們就可以開(kāi)始編寫(xiě) Python 代碼了。

2. 讀取 .xls 文件

讀取 .xls 文件最簡(jiǎn)單、最強(qiáng)大的方法是使用 Pandas 的 read_excel 函數(shù)。

基礎(chǔ)讀取代碼

假設(shè)你有一個(gè)名為 old_data.xls 的文件,內(nèi)容如下:

NameAgeCity
Alice25New York
Bob30London

以下是讀取該文件的代碼:

import pandas as pd

# 1. 定義文件路徑
file_path = 'old_data.xls'

try:
    # 2. 讀取 Excel 文件
    # Pandas 會(huì)自動(dòng)調(diào)用 xlrd 引擎來(lái)處理 .xls 文件
    df = pd.read_excel(file_path)

    # 3. 打印前幾行數(shù)據(jù)以檢查
    print("文件讀取成功!前 5 行數(shù)據(jù)如下:")
    print(df.head())

except FileNotFoundError:
    print(f"錯(cuò)誤:找不到文件 {file_path}")
except Exception as e:
    print(f"讀取過(guò)程中發(fā)生錯(cuò)誤:{e}")

進(jìn)階讀取技巧

在實(shí)際工作中,Excel 文件往往比較復(fù)雜。以下是一些常用的參數(shù)配置:

  • 指定 Sheet(工作表): 如果文件有多個(gè) Sheet,你可以通過(guò)名字或索引指定。
  • 指定表頭: 有時(shí)候第一行不是表頭。
# 讀取名為 "Sheet2" 的工作表,且指定第 2 行(索引為1)作為表頭
df_sheet2 = pd.read_excel(file_path, sheet_name='Sheet2', header=1)

# 如果文件中沒(méi)有表頭,設(shè)置 header=None
df_no_header = pd.read_excel(file_path, header=None)

3. 寫(xiě)入 .xls 文件

將數(shù)據(jù)保存為 .xls 格式,我們需要使用 Pandas 的 to_excel 方法。Pandas 會(huì)在后臺(tái)調(diào)用 xlwt 庫(kù)來(lái)完成這個(gè)任務(wù)。

基礎(chǔ)寫(xiě)入代碼

我們將創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)集,并將其保存為 output.xls。

import pandas as pd

# 1. 創(chuàng)建示例數(shù)據(jù)(字典格式)
data = {
    '員工ID': [101, 102, 103],
    '姓名': ['張三', '李四', '王五'],
    '入職年份': [2018, 2020, 2023]
}

# 2. 轉(zhuǎn)換為 DataFrame
df_output = pd.DataFrame(data)

# 3. 定義輸出文件名
output_file = 'report_2024.xls'

try:
    # 4. 寫(xiě)入文件
    # index=False 表示不把左側(cè)的行索引號(hào)(0, 1, 2...)寫(xiě)入 Excel
    df_output.to_excel(output_file, index=False)
    
    print(f"成功將數(shù)據(jù)寫(xiě)入 {output_file}")

except Exception as e:
    print(f"寫(xiě)入失?。簕e}")

寫(xiě)入多個(gè) Sheet

如果你需要在一個(gè) .xls 文件中寫(xiě)入多個(gè)工作表,需要使用 ExcelWriter 對(duì)象:

with pd.ExcelWriter('multi_sheet_report.xls', engine='xlwt') as writer:
    df_output.to_excel(writer, sheet_name='員工名單', index=False)
    df_output.to_excel(writer, sheet_name='備份數(shù)據(jù)', index=False)
    
print("多 Sheet 文件寫(xiě)入完成。")

4. 常見(jiàn)陷阱與解決方案 (Common Pitfalls)

作為初學(xué)者,處理 .xls 時(shí)最容易遇到以下問(wèn)題:

1. 行數(shù)限制 (The 65,536 Row Limit)

問(wèn)題: 當(dāng)你試圖寫(xiě)入超過(guò) 65,536 行數(shù)據(jù)到 .xls 文件時(shí),程序會(huì)報(bào)錯(cuò)。

原因: 這是 Excel 97-2003 格式的物理限制。

解決:

  • 首選: 將文件保存為 .xlsx 格式(支持約 100 萬(wàn)行)。
  • 次選: 如果必須用 .xls,需要將數(shù)據(jù)拆分到多個(gè) Sheet 或多個(gè)文件中。

2. 庫(kù)的混淆 (xlrd vs openpyxl)

問(wèn)題: 報(bào)錯(cuò) xlrd.biffh.XLRDError: Excel xlsx file; not supported.

原因: 你試圖用 xlrd 讀取 .xlsx 文件,或者你的 xlrd 版本過(guò)新(2.0+ 版本移除了對(duì) .xlsx 的支持,僅支持 .xls)。

解決:

  • 讀取 .xls: 確保安裝了 xlrd。
  • 讀取 .xlsx: 確保安裝了 openpyxl

3. 編碼問(wèn)題

問(wèn)題: 讀取中文內(nèi)容的 .xls 有時(shí)會(huì)出現(xiàn)亂碼(較少見(jiàn),但存在)。

解決: 雖然 Pandas 處理得很好,但如果遇到,可以在 read_excel 中嘗試添加 encoding='utf-8'encoding='gbk' 參數(shù)(雖然新版 Pandas 已移除此參數(shù),通常需檢查源文件是否損壞)。

5. 總結(jié)與建議

處理舊版 Excel 文件是數(shù)據(jù)分析師的基本功。以下是本次教程的核心要點(diǎn)回顧:

  • 讀取: 使用 pandas.read_excel('file.xls'),底層依賴(lài) xlrd。
  • 寫(xiě)入: 使用 df.to_excel('file.xls'),底層依賴(lài) xlwt。
  • 注意: 牢記 .xls 格式有 65536 行的行數(shù)限制。

給初學(xué)者的最終建議:除非工作環(huán)境強(qiáng)制要求使用 .xls,否則在生成新文件時(shí),強(qiáng)烈建議使用現(xiàn)代的 .xlsx 格式。它體積更小、更安全、且支持更多的數(shù)據(jù)量。

到此這篇關(guān)于Python新手指南之如何讀寫(xiě)舊版Excel(.xls)格式文件的文章就介紹到這了,更多相關(guān)Python讀寫(xiě)舊版Excel文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python+tkinter實(shí)現(xiàn)網(wǎng)站下載工具

    Python+tkinter實(shí)現(xiàn)網(wǎng)站下載工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Python+tkinter實(shí)現(xiàn)網(wǎng)站下載工具,實(shí)現(xiàn)所有數(shù)據(jù)一鍵獲取,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-03-03
  • Python 使用SMTP發(fā)送郵件的代碼小結(jié)

    Python 使用SMTP發(fā)送郵件的代碼小結(jié)

    python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝,需要的朋友可以參考下
    2016-09-09
  • 如何實(shí)現(xiàn)在Anaconda中打開(kāi)python自帶idle

    如何實(shí)現(xiàn)在Anaconda中打開(kāi)python自帶idle

    這篇文章主要介紹了如何實(shí)現(xiàn)在Anaconda中打開(kāi)python自帶idle問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Django實(shí)現(xiàn)自定義404,500頁(yè)面教程

    Django實(shí)現(xiàn)自定義404,500頁(yè)面教程

    這篇文章主要介紹了Django實(shí)現(xiàn)自定義404,500頁(yè)面的詳細(xì)方法,非常簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2017-03-03
  • fastcgi文件讀取漏洞之python掃描腳本

    fastcgi文件讀取漏洞之python掃描腳本

    這篇文章主要介紹了fastcgi文件讀取漏洞之python掃描腳本,需要的朋友可以參考下
    2017-04-04
  • 詳解Python中的自定義密碼驗(yàn)證

    詳解Python中的自定義密碼驗(yàn)證

    這篇文章主要為大家介紹了如何實(shí)現(xiàn)在Python中的自定義密碼驗(yàn)證,并對(duì)密碼驗(yàn)證功能進(jìn)行單元測(cè)試。文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-02-02
  • django的使用步驟入門(mén)教程(很詳細(xì))

    django的使用步驟入門(mén)教程(很詳細(xì))

    隨著IT行業(yè)的不斷發(fā)展,編程學(xué)習(xí)也越來(lái)越重要,很多人都開(kāi)啟了很多計(jì)算機(jī)語(yǔ)言的學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于django的使用步驟入門(mén)教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解(最新推薦)

    Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解(最新推薦)

    這篇文章主要介紹了Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了機(jī)器學(xué)習(xí)KNN算法原理以及Python相關(guān)實(shí)現(xiàn)步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python prettytable模塊應(yīng)用詳解

    Python prettytable模塊應(yīng)用詳解

    PrettyTable 是python中的一個(gè)第三方庫(kù),可用來(lái)生成美觀(guān)的ASCII格式的表格,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09

最新評(píng)論

新余市| 宜城市| 苗栗县| 宣武区| 祥云县| 南汇区| 安图县| 榕江县| 乐清市| 建德市| 松原市| 韩城市| 滦平县| 洪江市| 嵊州市| 定襄县| 德格县| 佳木斯市| 应城市| 河源市| 鄂尔多斯市| 涞源县| 南阳市| 大竹县| 梧州市| 阜阳市| 卓资县| 深州市| 新沂市| 连山| 渭源县| 绥江县| 松滋市| 沾化县| 平潭县| 高邮市| 锡林浩特市| 达拉特旗| 格尔木市| 贵溪市| 新昌县|