摘要:目錄和基本操作用模塊打開文檔,查看所有表通過名稱獲取表格獲取活動表獲取表格的尺寸獲取單元格中的數據獲取單元格的行列坐標獲取區間內的數據獲取指定區間的數據獲取指定行列的數據按行列獲取值獲取活動表的行列數操作創建新的修改單
處理Excel表格需要用到openpyxl模塊,該模塊需要手動安裝pip install openpyxl
簡單來說:
xls是excel2003及以前版本所生成的文件格式
xlsx是excel2007及以后版本所生成的文件格式
(excel 2007之后版本可以打開上述兩種格式,但是excel2013只能打開xls格式)
進一步的詳細解釋參見:excel后綴.xls和.xlsx有什么區別
用到的test.xlsx表格
在這里插入圖片描述
openpyxl.load_workbook()
函數接受文件名,返回一個workbook數據類型的值。這個workbook對象代表這個Excel文件,這個有點類似File對象代表一個打開的文本文件。
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值print(workbook.sheetnames) # 打印Excel表中的所有表# 結果:# ["Sheet1", "Sheet2"]
在第10行,使用workbook["Sheet1"]
獲取指定sheet表
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值print(workbook.sheetnames) # 打印Excel表中的所有表sheet = workbook["Sheet1"] # 獲取指定sheet表print(sheet)# 結果:# ["Sheet1", "Sheet2"]#
使用workbook.active
獲取活動表
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print(sheet)# 結果:#
這里所說的尺寸大小,指的是excel表格中的數據有幾行幾列,針對的是不同的sheet而言
使用sheet.dimensions
獲取表格的尺寸
下面打印的A1:B7是什么意思呢?
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook["Sheet1"] # 獲取指定sheet表print(sheet.dimensions) # 獲取表格的尺寸大小# 結果:# A1:B7
方法1:指定坐標的方式
sheet[“A1”]
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表# print(sheet.dimensions) # 獲取表格的尺寸大小cell1 = sheet["A1"] # 獲取A1單元格的數據cell2 = sheet["B7"] # 獲取B7單元格的數據# cell2 = sheet["B7"].value # 另一種寫法# 正確示范# cell1.value獲取單元格A1中的值# cell2.value獲取單元格B7中的值print(cell1.value,cell2.value) # 姓名 18# 錯誤示范print(cell1,cell2) # | |
方法2: 指定行列的方式
sheet.cell(row=, column=)方式
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表# print(sheet.dimensions) # 獲取表格的尺寸大小cell1 = sheet.cell(row=1,column=1) # 獲取第1行第1列的數據cell2 = sheet.cell(row=3,column=2) # 獲取第3行第4的數據# 正確示范# cell1.value獲取單元格A1中的值# cell2.value獲取單元格B7中的值print(cell1.value,cell2.value) # 姓名 41
.row
獲取某個格子的行數;.columns
獲取某個格子的列數;.corordinate
獲取某個格子的坐標;import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表# print(sheet.dimensions) # 獲取表格的尺寸大小cell = sheet.cell(row=3, column=2) # 獲取第3行第4的數據print(cell.value, cell.row, cell.column, cell.coordinate)"""結果:41 3 2 B3"""
獲取單行單列數據的時候,使用一層for循環;獲取多行多列、指定區間的數據時,使用兩層for循環
sheet["A1:A5"]
拿到指定區間import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:")print(sheet)cell = sheet["A1:A5"] # 獲取A1到A5的數據print(cell)# 打印A1到A5的數據for i in cell: for j in i: print(j.value)# 結果:# 當前活動表是:# # ((,), (,), (,), (,), (,)) | | | | | # 姓名# 張三# 李四# 王五# 趙六
下面的代碼,獲取一列數據的時候,使用一層for循環
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))cell = sheet["2"] # 獲取第2行的數據# 打印A1到A5的數據for i in cell: print(i.value)# 結果:# 當前活動表是: # 張三# 74
下面代碼,獲取兩列數據的時候,使用兩層for循環。注意到,兩列的結果打印到一起了,可讀性較差
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))cell = sheet["A:B"] # 獲取AB列的數據# 打印AB列數據for i in cell: for j in i: print(j.value)# 結果:# 當前活動表是: # 姓名# 張三# 李四# 王五# 趙六# alice# bob# 年齡# 74# 41# 56# 12# 17# 18
iter_rows()
:按行讀取
iter_cols()
:按列讀取
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))# 按行獲取值print("按行獲取值")for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2): for j in i: print(j.value)# 按列獲取值print("按列獲取值")for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2): for j in i: print(j.value)# 結果:# 當前活動表是: # 按行獲取值# 張三# 74# 李四# 41# 王五# 56# 趙六# 12# 按列獲取值# 張三# 李四# 王五# 趙六# 74# 41# 56# 12
方法1:使用
sheet.max_row 獲取行數
sheet.max_column 獲取列數
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("2.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))rows = sheet.max_row # 獲取行數column = sheet.max_column # 獲取列數print(rows)print(column)"""結果:當前活動表是:3816"""
方法2:自己寫一個for循環
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))row = []column = []# 獲取當前活動表有多少行for i in sheet.rows: row.append(list(i)) # i是元組類型,轉為列表# 獲取當前活動表有多少列for i in sheet.columns: column.append(list(i)) # i是元組類型,轉為列表print("行數:"+str(len(row)))print("列數:"+str(len(column)))"""結果:當前活動表是:行數:12列數:3"""
第9行代碼用來指定創建的excel的活動表的名字:
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.Workbook()sheet = workbook.activesheet.title = "1號sheet"workbook.save("1.xlsx")
第9行代碼,通過給單元格重新賦值,來修改單元格的值
第9行代碼的另一種寫法sheet["B1"].value = "age"
第10行代碼,保存時如果使用原來的(第7行)名字,就直接保存;如果使用了別的名字,就會另存為一個新文件
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表sheet["A1"] = "name"workbook.save("test.xlsx")
使用append()
方法,在原來數據的后面,按行插入數據
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))data = [ ["素子",23], ["巴特",24], ["塔奇克馬",2]]for row in data: sheet.append(row) # 使用append插入數據workbook.save("test.xlsx")
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))sheet.insert_rows(idx=3, amount=2)sheet.insert_cols(idx=2, amount=1)workbook.save("test.xlsx")
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))sheet.delete_rows(idx=10) # 刪除第10行sheet.delete_cols(idx=1, amount=2) # 刪除第1列,及往右共2列workbook.save("test.xlsx")
move_range(“數據區域”,rows=,cols=):正整數為向下或向右、負整數為向左或向上
import osimport openpyxlpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))sheet.move_range("D11:F12",rows=0,cols=-3) # 移動D11到F12構成的矩形格子workbook.save("test.xlsx")
核心代碼
from openpyxl.utils import get_column_letter, column_index_from_string# 根據列的數字返回字母print(get_column_letter(2)) # B# 根據字母返回列的數字print(column_index_from_string("D")) # 4
舉個例子:
import osimport openpyxlfrom openpyxl.utils import get_column_letter, column_index_from_stringpath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("2.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:" + str(sheet))# 根據列的數字返回字母print(get_column_letter(2)) # B# 根據字母返回列的數字print(column_index_from_string("D")) # 4
import osimport openpyxlimport openpyxl.stylespath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是:"+str(sheet))cell = sheet["A1"]font = cell.fontprint("當前單元格的字體樣式是")print(font.name, font.size, font.bold, font.italic, font.color)"""當前活動表是:當前單元格的字體樣式是等線 11.0 False False Parameters:rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type="theme""""
openpyxl.styles.Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
其中,字體顏色中的color是RGB的16進制表示
import osimport openpyxlimport openpyxl.stylespath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print(sheet)cell = sheet["A1"]cell.font = openpyxl.styles.Font(name="微軟雅黑", size=20, bold=True, italic=True, color="FF0000")workbook.save("test.xlsx")
再者,可以使用for循環,修改多行多列的數據,在這里介紹了獲取的方法
import osimport openpyxlimport openpyxl.stylespath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print(sheet)cell = sheet["A"]for i in cell: i.font = openpyxl.styles.Font(name="微軟雅黑", size=20, bold=True, italic=True, color="FF0000")workbook.save("test.xlsx")
Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉角度,wrap_text=是否自動換行)
水平對齊:‘distributed’,‘justify’,‘center’,‘left’, ‘centerContinuous’,"right,‘general’
垂直對齊:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’
import osimport openpyxl.stylespath = r"C:/Users/asuka/Desktop"os.chdir(path) # 修改工作路徑workbook = openpyxl.load_workbook("test.xlsx") # 返回一個workbook數據類型的值sheet = workbook.active # 獲取活動表print("當前活動表是
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122569.html
小編寫這篇文章的一個主要目的,主要就是給大家去做一個解答,接的內容主要是利用python去讀取excel表格,那么,怎么才能快速的實現這個操作呢?下面就給大家詳細解答下。 一、python讀取excel表格數據 1、讀取excel表格數據常用操作 importxlrd #打開excel表格 data_excel=xlrd.open_workbook('data/datas...
摘要:對象也有和屬性提供該單元格的位置信息。讀取對象的屬性一個完整的案例代碼如下讀取文檔返回一個對象,有點類似于文件對象在工作薄中取得工作表返回一個列表,存儲表中所有的工作表返回一個對象,返回當前的活動表獲取工作表中,單元格的信息的屬性 Excel 是 Windows 環境下流行的、強大的電子表格應用。openpyxl 模塊讓 Python 程序能讀取和修改 Excel 電子表格文件。例如,...
小編寫這篇文章的主要目的,主要是給大家講解關于python的一些知識,講解的內容是關于如何讀取excel表格的一些詳細方法,請大家要仔細閱讀哦。 一、python讀取excel表格數據 1、讀取excel表格數據常用操作 importxlrd #打開excel表格 data_excel=xlrd.open_workbook('data/dataset.xlsx')...
摘要:也瀏覽過家具城的官網,本著在一定的預算范圍之類挑選最合適的,作為一個程序猿,一顆不安分的心,決定自己爬蟲下網站,列出個表格,也方便給父母輩們查看,順帶再練習下爬蟲的。根據行列坐標將數據寫入單元格。設置列寬,指定開始列位置,指定結束列位置。 原文鏈接:https://mp.weixin.qq.com/s/tQ... 家中想置辦些家具,聽朋友介紹說蘇州蠡(li第二聲)口的家具比較出名,因...
此篇文章關鍵給大家介紹了python使用pdfplumber庫成批提取pdf表格內容轉換成excel格式的實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 要求 需要提取pdf的信息,儲存到excel中。盡管是完全可以運用WPS將pdf文件導出成excel,但是這個作用是收取費用的,而且如果把很多pdf轉excel的情況下,手動式去導出是很用...
閱讀 2994·2021-11-23 09:51
閱讀 2813·2021-11-11 16:55
閱讀 2919·2021-10-14 09:43
閱讀 1399·2021-09-23 11:22
閱讀 1041·2019-08-30 11:04
閱讀 1670·2019-08-29 11:10
閱讀 962·2019-08-27 10:56
閱讀 3111·2019-08-26 12:01