Python獲取excel內(nèi)容及相關(guān)操作代碼實(shí)例
Python沒有自帶openyxl,需要安裝: pip install openyxl
打開excel文檔: openyxl.load_workbook(excel地址) - 打開現(xiàn)有excel文件
openyxl.Workbook() - 新建一個(gè)excel文件
返回一個(gè)工作博對(duì)象
import openpyxlwb = openpyxl.load_workbook('test.xlsx')print(type(wb)) # <class ’openpyxl.workbook.workbook.Workbook’>
openpyxl.load_workbook()函數(shù),傳入一個(gè)存在的excel文件名稱/excel文件名稱+文件路徑,返回一個(gè)workbook對(duì)象。
從workbook對(duì)象中獲取工作表
import openpyxlwb = openpyxl.load_workbook('test.xlsx')# print(type(wb)) # <class ’openpyxl.workbook.workbook.Workbook’># 工作簿對(duì)象.sheetnames - 獲取當(dāng)前工作簿中所有表的名字# print(wb.sheetnames) [’Sheet1’, ’Sheet2’, ’Sheet3’]# 工作簿對(duì)象.active - 獲取當(dāng)前活動(dòng)表對(duì)應(yīng)的Worksheet對(duì)象# print(wb.active) <Worksheet 'Sheet1'># 工作簿對(duì)象[表名] - 根據(jù)表名獲取指定表對(duì)象# print(wb['Sheet2']) <Worksheet 'Sheet2'># 表對(duì)象.title - 獲取表對(duì)象的表名ws = wb['Sheet1']# print(ws.title) Sheet1# 表對(duì)象.max_row - 獲取表中最多有多少行# print(ws.max_row) 15# 表對(duì)象.max_column - 獲取表有多少列print(ws.max_column) # 3
從表中取得單元格
import openpyxlwb = openpyxl.load_workbook('test.xlsx')ws = wb['Sheet1']# 表對(duì)象[’列號(hào)行號(hào)’] - 獲取指定列的指定行對(duì)應(yīng)的單元格對(duì)象(單元格對(duì)象是 Cell 類的對(duì)象,列號(hào)是從A開始,行號(hào)是從1開始)a = ws['A1']# print(a) # <Cell ’Sheet1’.A1># 單元格對(duì)象.value - 獲取單元格中的內(nèi)容print(a.value)# 單元格對(duì)象.row - 獲取行號(hào)(數(shù)字1開始)print(a.row)# 單元格對(duì)象.column - 獲取列號(hào)(數(shù)字1開始)print(a.column)# 單元格對(duì)象.coordinate - 獲取位置(包括行號(hào)和列號(hào))print(a.coordinate)# 表對(duì)象.iter_rows() - 一行一行的取row_s = ws.iter_rows()for a in row_s: for i in a: print(i.value)# 表對(duì)象.iter_cols() - 列表一列的取col_s = ws.iter_cols()for c in col_s: for j in c: print(j.value)
用字母來指定列時(shí)會(huì)出現(xiàn)列Z之后用兩個(gè)字母代替,可以調(diào)用表的cell()方法,傳入整數(shù)作為行數(shù)和列數(shù),第一行或者第一列的整數(shù)是1,而不是0
表對(duì)象.cell(行號(hào),列號(hào))
import openpyxlwb = openpyxl.load_workbook('test.xlsx')ws = wb['Sheet1']# 獲取第二列的所有內(nèi)容max_row = ws.max_rowfor row in range(1, max_row + 1): cell = ws.cell(row, 2) print(cell.value)
從表中取得列和行
取電子表格中一行、一列或一個(gè)矩形區(qū)域中的所有 Cell 對(duì)象
表對(duì)象[位置1:位置2] 獲取指定范圍內(nèi)的所有單元格
import openpyxlfrom openpyxl.utils import get_column_letter, column_index_from_stringwb = openpyxl.load_workbook('test.xlsx')ws = wb['Sheet1']max_row = ws.max_rowcolumn = get_column_letter(max_row)# 獲取第一列所有單元格對(duì)象row2 = ws['A1':f'{column}1']ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]print(ss)
import openpyxlfrom openpyxl.utils import get_column_letter, column_index_from_stringwb = openpyxl.load_workbook('test.xlsx')ws = wb['Sheet1']max_cols = ws.max_columncolumn = get_column_letter(max_cols)# 獲取第一片區(qū)域所有單元格對(duì)象row2 = ws['A1':f'{column}3']ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]print(ss)
創(chuàng)建并保存Excel文檔
openpyxl.Workbook() - 創(chuàng)建空的Excel文件對(duì)應(yīng)的工作薄對(duì)象
工作薄對(duì)象.save(文件路徑) - 保存文件
import openpyxlwb = openpyxl.load_workbook('test.xlsx')ws = wb['Sheet1']# 修改sheet的名稱ws.title = 'hello_world'wb.save('test.xlsx')
創(chuàng)建和刪除sheet
工作薄對(duì)象.create_sheet(title, index) - 在指定工作薄中的指定位置(默認(rèn)是最后)創(chuàng)建指定名字的表,并返回表對(duì)象
工作薄對(duì)象.remove(表對(duì)象) - 刪除工作薄中的指定表
import openpyxlwb = openpyxl.load_workbook('test.xlsx')wb.create_sheet()print(wb.sheetnames)wb.create_sheet('test1')print(wb.sheetnames)wb.create_sheet('test2', index=0)print(wb.sheetnames)wb.remove(wb['test2'])print(wb.sheetnames)wb.save('test.xlsx')
將數(shù)據(jù)寫入表格中
import openpyxlwb = openpyxl.load_workbook('test.xlsx')ws = wb['hello_world']# 方式一ws['A4'] = 'hello_world'# 方式二ws.cell(4, 5).value = 'hello_test'wb.save('test.xlsx')
設(shè)置單元格樣式
用表格展示數(shù)據(jù)的時(shí)候,有的時(shí)候需要對(duì)不同的數(shù)據(jù)以不同的風(fēng)格進(jìn)行展示從而達(dá)到分區(qū)或者強(qiáng)調(diào)的作用。
import openpyxlfrom openpyxl.styles import Font, PatternFill, Border, Side, Alignment# 1.打開工作薄wb = openpyxl.load_workbook('test.xlsx')ws = wb['hello_world']# 2.設(shè)置單元格字體樣式'''Font( name=None, # 字體名,可以用字體名字的字符串 strike=None, # 刪除線,True/False color=None, # 文字顏色 size=None, # 字號(hào) bold=None, # 加粗, True/False italic=None, # 傾斜,Tue/False underline=None # 下劃線, ’singleAccounting’, ’double’, ’single’, ’doubleAccounting’)'''# 1:創(chuàng)建字體對(duì)象font1 = Font( size=20, italic=True, color='ff0000', bold=True, strike=True)# 2:設(shè)置指定單元格的字體# 單元格對(duì)象.font = 字體對(duì)象ws['B2'].font = font1# 3:設(shè)置單元格填充樣式'''PatternFill( fill_type=None, # 設(shè)置填充樣式: ’darkGrid’, ’darkTrellis’, ’darkHorizontal’, ’darkGray’, ’lightDown’, ’lightGray’, ’solid’, ’lightGrid’, ’gray125’, ’lightHorizontal’, ’lightTrellis’, ’darkDown’, ’mediumGray’, ’gray0625’, ’darkUp’, ’darkVertical’, ’lightVertical’, ’lightUp’ start_color=None # 設(shè)置填充顏色)'''fill = PatternFill( fill_type='solid', start_color='ffff00')ws['B2'].fill = fill# 設(shè)置單元格對(duì)齊樣式al = Alignment( horizontal='right', # 水平向方: center 靠左:left 靠右: right vertical='top' # 垂直方向: center, top, bottom)ws['B2'].alignment = al# 設(shè)置邊框樣式# 設(shè)置邊對(duì)象(四個(gè)邊可以是一樣的也可以不同,如果不同就創(chuàng)建多個(gè)Side對(duì)象)side = Side(border_style='thin', color='0000ff')# 設(shè)置邊框?qū)ο?left、right、top、bottom表示的是邊框的四個(gè)邊,這兒四個(gè)邊使用的是一個(gè)邊對(duì)象)db = Border(left=side, right=side, top=side, bottom=side)ws['B2'].border = db# 設(shè)置單元格的寬度和高度# 設(shè)置指定列的寬度ws.column_dimensions['A'].width = 20# 設(shè)置指定行的高度ws.row_dimensions[1].height = 45wb.save('test.xlsx')
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. css代碼優(yōu)化的12個(gè)技巧2. ASP實(shí)現(xiàn)加法驗(yàn)證碼3. PHP循環(huán)與分支知識(shí)點(diǎn)梳理4. 讀大數(shù)據(jù)量的XML文件的讀取問題5. ASP.NET MVC使用異步Action的方法6. asp批量添加修改刪除操作示例代碼7. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案8. HTML5 Canvas繪制圖形從入門到精通9. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容10. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)
