1. 程式人生 > >Python3中操作xlsx檔案

Python3中操作xlsx檔案

1.openpyxl使用
openpyxl是Python可以用於處理xlsx的庫!

2.openpyxl安裝

pip install openpyxl

3.使用技巧
(1)開啟excel檔案,獲取工作表
import openpyxl
wb=openpyxl.load_workbook('ttt.xlsx')  #開啟excel檔案
print(wb.get_sheet_names())  #獲取工作簿所有工作表名
sheet=wb.get_sheet_by_name('Sheet1')  #獲取工作表
print(sheet.title) 
sheet02=wb.get_active_sheet()  #獲取活動的工作表
print(sheet02.title)
(2)操作單元格
print(sheet['A1'].value)  #獲取單元格A1值
print(sheet['A1'].column)  #獲取單元格列值
print(sheet['A1'].row)  #獲取單元格行號


print(sheet.cell(row=1,column=1).value)  #獲取單元格A1值,column與row依然可用
for i in range(1,4,1):
    print(sheet.cell(row=i,column=1).value) #更加方便實用
print(sheet.max_column)  #獲取最大列數
print(sheet.max_row)  #獲取最大行數


(3)讀取excel檔案
#wbname==即檔名稱,sheetname==工作表名稱,可以為空,若為空預設第一個工作表
def readwb(wbname,sheetname):
    wb=openpyxl.load_workbook(filename=wbname,read_only=True)
    if (sheetname==""):
        ws=wb.active
    else:
        ws=wb[sheetname]
    data=[]
    for row in ws.rows:
        list=[]
        for cell in row:
            aa=str(cell.value)
            if (aa==""):
                aa="1"
            list.append(aa)
        data.append(list)
    print (wbname +"-"+sheetname+"- 已成功讀取")
    return data


(4)新建excel,並寫入資料
#新建excel
def creatwb(wbname):  
    wb=openpyxl.Workbook()
    wb.save(filename=wbname)
    print ("新建Excel:"+wbname+"成功")
# 寫入excel檔案中 date 資料,date是list資料型別, fields 表頭
def savetoexcel(data,fields,sheetname,wbname):   
    print("寫入excel:")
    wb=openpyxl.load_workbook(filename=wbname)
    sheet=wb.active
    sheet.title=sheetname  
    field=1
    for field in range(1,len(fields)+1):   # 寫入表頭
        _=sheet.cell(row=1,column=field,value=str(fields[field-1]))
    row1=1
    col1=0
    for row1 in range(2,len(data)+2):  # 寫入資料
        for col1 in range(1,len(data[row1-2])+1):
            _=sheet.cell(row=row1,column=col1,value=str(data[row1-2][col1-1]))
    wb.save(filename=wbname)
    print("儲存成功")

例項:

1.寫一個Excel檔案程式碼:

from openpyxl import Workbook
from openpyxl.utils import get_column_letter
# 在記憶體中建立一個workbook物件,而且會至少建立一個worksheet
wb = Workbook()
#獲取當前活躍的worksheet,預設就是第一個worksheet
ws = wb.active
#設定單元格的值,A1等於6(測試可知openpyxl的行和列編號從1開始計算),B1等於7
ws.cell(row=1, column=1).value = 6
ws.cell(row=2, column=2).value = 7
#從第2行開始,寫入9行10列資料,值為對應的列序號A、B、C、D...
for row in range(2,11):
    for col in range (1,11):
        ws.cell(row=row, column=col).value = get_column_letter(col)
#可以使用append插入一行資料
ws.append(["mo","suo","zhong"])
#儲存
wb.save(filename="F:\\lj\\a.xlsx")

2.對該檔案進行讀操作

from openpyxl import load_workbook
#開啟一個workbook
wb = load_workbook(filename="F:\\lj\\a.xlsx")
#獲取當前活躍的worksheet,預設就是第一個worksheet
#ws = wb.active
#當然也可以使用下面的方法
#獲取所有表格(worksheet)的名字
sheets = wb.get_sheet_names()
#第一個表格的名稱
sheet_first = sheets[0]
#獲取特定的worksheet
ws = wb.get_sheet_by_name(sheet_first)
#獲取表格所有行和列,兩者都是可迭代的
rows = ws.rows
columns = ws.columns
#迭代所有的行
for row in rows:
    line = [col.value for col in row]
    print(line)
#通過座標讀取值
print(ws.cell(row=1,column=1).value)