Python筆記一之excel的讀取

来源:https://www.cnblogs.com/hunterxiong/archive/2023/12/29/17933905.html
-Advertisement-
Play Games

本文首發於公眾號:Hunter後端 原文鏈接:Python筆記一之excel的讀取 這裡我常用的 python 對於 excel 的讀取庫有兩個,一個是 xlsxwriter 用於操作 excel 的寫入,一個是 xlrd 用於 excel 文件的讀取。 使用的庫的版本如下: xlsx==1.2.6 ...


本文首發於公眾號:Hunter後端

原文鏈接:Python筆記一之excel的讀取

這裡我常用的 python 對於 excel 的讀取庫有兩個,一個是 xlsxwriter 用於操作 excel 的寫入,一個是 xlrd 用於 excel 文件的讀取。

使用的庫的版本如下:

  • xlsx==1.2.6
  • xlrd==1.1.0

xlsxwriter 寫入 excel

新建一個 excel

import xlsxwriter

path = "/Users/hunter/xxx.xlsx"

wb = xlsxwriter.Workbook(path)

添加一個 sheet:

# 定義 sheet 的名稱
sheet_name = "sheet_name"  

# 添加一個 sheet 頁
sheet_1 = wb.add_worksheet(sheet_name)

sheet 表格數據的寫入
sheet 的表格數據有幾種方式,一種是通過 x, y 這種坐標軸定位的方式,從左上角開始,左上角也就是 'A1' 的位子為 (0, 0)。

比如我們想要在左上角寫入數據:

sheet1.write(0, 0, "A1數據")

如果我們想要在第二行,第三列寫入數據:

sheet1.write(1, 2, "C2數據")

另一種是通過 excel 的單元格名稱來定位寫入,比如 'A1','D4'這種:

sheet1.write("A1", "A1數據")
sheet1.write("F2", "F2數據")

批量寫入
除了單個單元格的數據寫入,我們還可以通過某個起始單元格來批量寫入。

批量寫入可以從橫向寫入,也可以從縱向寫入。

比如如果想要從 C2 單元格開始,橫向寫入 python,java,JS 三條數據,可以如下操作:

sheet1.write_row("C2", ["python", "java", "JS"])

也可以通過 i, j 的定位方式來操作,比如從 "C3" 開始往後寫入:

sheet1.write_row(2, 2, ["python", "java", "JS"])

上面的 write_row() 方法是橫向寫入,從起始位置橫向開始寫,如果是縱向,那就使用 write_column()

保存
然後將這個 excel 保存:

wb.close()

xlrd 讀取 excel

註意: 安裝 xlrd 的時候不要安裝預設的版本,當前預設的最新版本不能解析 xlsx 文件,我這裡選擇的是 xlrd==1.0.0

使用 xlrd 從 excel 中讀取數據的操作方式如下:

獲取 excel

import xlrd

path = "/Users/hunter/xxx.xlsx"
workbook = xlrd.open_workbook(path)

獲取 sheet

獲取 sheet 對象列表:

sheet_list = workbook.sheets()

獲取所有的 sheet 的名稱列表:

sheet_name_list = workbook.sheet_names()

根據索引獲取單個 sheet:

i = 0
sheet = workbook.sheet_by_index(i)

獲取單元格數據
如果直接獲取單元格數據,可以通過坐標軸的 x, y 的方式來定位獲取,其中左上角是 (0, 0)。

比如我們想獲取 (0, 0) 位子的數據,也就是 'A1' 的單元格,我們可以:

cell = sheet.cell(0, 0)

獲取到的是這個單元格對象,如果想要獲取其中的值,需要對 cell 對象再取值:

print(cell.value)

也可以直接使用取值的方法:

print(sheet.cell_value(0, 0))

獲取行列數據

上面是通過單元格單個獲取數據,我們可以單獨獲取行和列的數據,比如獲取第二行的單元格:

row_2 = sheet.row(1)

上面獲取到的數據是一個對象列表,每個元素都是一個個的單元格 cell,也就是我們上面通過 cell() 函數獲取到的對象。

如果是想直接取值,則可以:

row_value_2 = sheet.row_values(1)

返回的是一個列表,元素是該行單元的 value 值

查看該行長度:

row_value_2_len = sheet.row_len(1)

獲取 sheet 的總行數:

nrows = sheet.nrows

根據列獲取數據將函數的 row 換成 col 即可,比如獲取第二列的數據:

col_value_2 = sheet.col_values(1)

如果想獲取更多相關文章,可掃碼關註閱讀:

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jflashlite的燒寫速度要比mdk的燒寫速度快很多。雖然兩者底層都調用了jlink.exe,但是燒寫流程有區別。 MDK比較保守,不管怎麼樣先擦除扇區然後再執行寫入。 jflashlite比較靈活,先進行扇區校驗,如果不一致,才執行擦除和寫入。這會大大提升微小修改的程式燒寫時間。 當然你可以用 ...
  • Partial Update 數據打寬 通過不同的流寫不同的欄位,打寬了數據的維度,填充了數據內容;如下所示: --FlinkSQL參數設置 set `table.dynamic-table-options.enabled` = `true`; SET `env.state.backend` = ` ...
  • 實例項目使用 vite5 + vue3 + ts,項目地址 vite-vue3-charts,預覽地址 https://weizwz.com/vite-vue3-charts 準備工作 1. 註冊為百度地圖開發者 官網地址,然後在 應用管理 -> 我的應用 里,創建應用,創建好後複製 AK 2. 在 ...
  • svelte文件編譯為js後的結構 源代碼: <script lang="ts"> let firstName = '張' let lastName = '三' let age = 18 function handleChangeName() { firstName = '王' lastName = ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 1. 需求分析 為了提高用戶對頁面鏈接分享的體驗,需要對分享鏈接做一些處理。 以 Telegram(國外某一通訊軟體) 為例,當在 Telegram 上分享已做過處理的鏈接時,它會自動嘗試獲取鏈接的預覽信息,包括標題、描述和圖片。 如此當 ...
  • $0 和 __vue__ $0 是指當滑鼠點擊 Element 面板的某個 dom 元素後,console 里 $0 變數會自動指向該 dom 元素對象 __vue__ 是指 vue 框架會往 vue 組件 $mount 掛載的 dom 元素對象上添加一個 __vue__ 變數來指向當前 vue 組 ...
  • npm導入和風天氣的圖標庫後使用沒有效果,就在網上查詢了下怎麼解決,然後動手嘗試一下。 參考文章 步驟 1. 下載圖標文件(鏈接),解壓後大致這樣 2. 在transfonter網站將需要的圖標字體轉成Base64,在font\fonts文件下 選擇上傳 下載 3. 解壓後把stylesheet.c ...
  • keycloak~從login-status-iframe相關文章,可閱讀我的這兩篇keycloak~從login-status-iframe頁面總結如何跨域傳值 ,keycloak~對接login-status-iframe頁面判斷用戶狀態變更 。 什麼是跨域 跨域(Cross-Origin)是指 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...