excel在Python中的應用
存測試數據
有的時候大批量的數據,存到txt文件里顯然不是最佳的方式,我們可以存到excel文件里面,第一方便我們存儲數據和做數據,一方面方便我們讀取數據,比較明朗。測試的時候就從數據庫中讀取出來。
存測試結果
可以批量把結果存到excel中,也比較好整理數據,比txt方便。
excel庫
python中有好幾個和excel操作相關的模塊。
xlrd庫:從excel中讀取數據。支持xls,xlsx。
xlwt庫:對excel進行修改操作。不支持對xlsx格式的修改。
xlutils:在xlwt和xlrd中,對一個已存在的文件進行修改。
openpyxl:主要針對xlsx格式的excel文件進行讀取和編輯。
官方解釋:
openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.
網址:
http://www/python-excel.org/
或直接pip安裝:
pip3 install openpyxl
離線方式安裝:
Excel 中三大對象:
WorkBook
Sheet
Cell
此外記住row:行;column:列。
在excel中,主要的操作是在sheet中對數據進行讀、寫、修改的操作。
操作流程:
打開/創建一個excel文件,生成一個工作簿(WorkBook)對象。
獲取某個表單(sheet)對象。
在表單對象中的單元格(cell)中讀、寫、修改數據。
openpyxl - 常用讀操作
from openpyxl import load_workbook #加載load_workbook函數
wb=load_workbook("sample.xlsx") #打開一個已經存在的excel文件
sh=wb.get_sheet_by_name("sheet1") #打開某個表單
rows=sh.max_row #獲取總行數
columns=sh.max_column #獲取總列數
cl=sh.cell(row=3,column=7).value #獲取指定的(第3行,第7列)的單元格值
sh.cell(row=1,column=1).value="hello" #修改某個值
wb.save("hello.xlsx") #保存workbook,這樣才可以保存剛剛寫入的值。
以下嘗試進行excel數據讀取:
from openpyxl import load_workbook
path="C:/Users/Hello/Desktop/temp/demo.xlsx"
#1.打開工作簿
wb=load_workbook(path)
#2.定位到所要操作的表單
sheet_obj=wb.get_sheet_by_name("lemon")
#3.讀取數據,索引從1,1開始
result=sheet_obj.cell(1,2).value
print(result)
D:\Python\python.exe D:/Work/Tools/python_workspace/python_2017/class_excel/test_1.py
D:/Work/Tools/python_workspace/python_2017/class_excel/test_1.py:9: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
sheet_obj=wb.get_sheet_by_name("lemon")
B2
可以看到,讀取出demo.xlsx中lemon頁(1,2)單元格數據為B2。
更新單元格值:
#4.修改數據,更新值
sheet_obj.cell(1,2).value="B2_2" #更新第一行第二列的單元格值
sheet_obj.cell(4,8).value="test" #更新第四行第八列的單元格值
wb.save("C:/Users/Hello/Desktop/temp/demo_1.xlsx")
#更新數據后,記得保存文件為另外的名字,類似于手動另存為。
獲取行數與列數:
#5 獲取行數與列數(這里獲取到的是具有數據的行與列,不會獲取到空行和空列):
row=sheet_obj.max_row
column=sheet_obj.max_column
print(row,column)
openpyxl - 常用寫操作
from openpyxl import Workbook 加載Workbook函數
wb=Workbook("hello.xlsx") #創建一個新的excel對象
sh_new=wb.create_sheet("新建的sheet") #創建一個新的sheet
wb.save("hello.xlsx") #保存當前workbook
#再次打開workbook才能對值進行修改,此處操作略
sh.cell(row=1,column=1).value=("hello") #修改指定單元格值
wb.save("hello.xlsx") #保存當前workbook中所有的修改
注意
: openpyxl中列和行的起始標識是1,但是別的操作數據的未必如此哦!
__author__ = 'Hello'
from openpyxl import Workbook #加載Workbook函數
wb=Workbook("hello.xlsx") #創建一個新的excel對象
sh_new=wb.create_sheet("sh_0624") #創建一個新的sheet
wb.save("hello.xlsx") #保存當前workbook
#再次打開workbook才能對值進行修改
from openpyxl import load_workbook
wb=load_workbook("hello.xlsx")
sheet_obj=wb.get_sheet_by_name("sh_0624")
sheet_obj.cell(row=1,column=1).value=("sh_0624") #修改指定單元格值
wb.save("hello.xlsx") #保存當前workbook中所有的修改
小練習:循環讀取excel表格中第一列的數據。
__author__ = 'Hello'
from openpyxl import Workbook,load_workbook
path="C:/Users/Hello/Desktop/temp/test1.xlsx"
wb=load_workbook(path)
sheet_obj=wb.get_sheet_by_name("Sheet1")
row=sheet_obj.max_row
column=sheet_obj.max_column
list=[]
for i in range(1,row+1):
result=sheet_obj.cell(i,1).value
#print(result)
list.append(result)
print(list)
D:\Python\python.exe D:/Work/Tools/python_workspace/python_2017/class_excel/test_3.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
D:/Work/Tools/python_workspace/python_2017/class_excel/test_3.py:7: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
range(0, 5)
sheet_obj=wb.get_sheet_by_name("Sheet1")
Process finished with exit code