簡(jiǎn)單的使用寫一個(gè)工作簿![]() 讀一個(gè)現(xiàn)有的工作簿>>> from openpyxl import load_workbook >>> wb = load_workbook(filename = 'empty_book.xlsx') >>> sheet_ranges = wb['range names'] >>> print(sheet_ranges['D18'].value) 3 注意:在loadworkbook中有幾個(gè)可以使用的標(biāo)志 1.guess_types 在讀取單元時(shí)啟用或禁用(默認(rèn))類型推斷 2.data_only 控制帶有公式的單元格是否有公式(默認(rèn))或上次Excel讀取表的值 3.keep_vba 控制任何可視的基本元素是否被保留(默認(rèn))。如果它們被保存了它們?nèi)匀皇遣豢删庉嫷?/p> 注意:openpyxl目前沒有在Excel文件中讀取所有可能的項(xiàng)目,因此如果打開并保存相同的名稱,那么圖像和圖表將從現(xiàn)有文件中丟失 使用數(shù)字格式>>> import datetime >>> from openpyxl import Workbook >>> wb = Workbook() >>> ws = wb.active >>> # 使用Python datetime設(shè)置日期 >>> ws['A1'] = datetime.datetime(2010, 7, 21) >>> >>> ws['A1'].number_format 'yyyy-mm-dd h:mm:ss' >>> # 您可以在具體情況下啟用類型推斷 >>> wb.guess_types = True >>> # 使用字符串和%符號(hào)設(shè)置百分比 >>> ws['B1'] = '3.14%' >>> wb.guess_types = False >>> ws['B1'].value 0.031400000000000004 >>> >>> ws['B1'].number_format '0%' 使用公式>>> from openpyxl import Workbook >>> wb = Workbook() >>> ws = wb.active >>> # 添加一個(gè)簡(jiǎn)單的公式 >>> ws["A1"] = "=SUM(1, 1)" >>> wb.save("formula.xlsx") 注意:你必須使用英文名作為一個(gè)函數(shù),函數(shù)參數(shù)必須用逗號(hào)隔開,而不是其他的標(biāo)點(diǎn)符號(hào),比如分號(hào) openpyxl從來沒有計(jì)算過公式但是可以檢查公式的名稱 >>> from openpyxl.utils import FORMULAE >>> "HEX2DEC" in FORMULAE True 合并/ 分割單元格>>> from openpyxl.workbook import Workbook >>> >>> wb = Workbook() >>> ws = wb.active >>> >>> ws.merge_cells('A2:D2') >>> ws.unmerge_cells('A2:D2') >>> >>> # 相當(dāng)于 >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4) >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) 插入圖像>>> from openpyxl import Workbook >>> from openpyxl.drawing.image import Image >>> >>> wb = Workbook() >>> ws = wb.active >>> ws['A1'] = 'You should see three logos below' >>> # 制作一個(gè)圖片 >>> img = Image('logo.png') >>> # 在單元格旁邊添加工作表和錨 >>> ws.add_image(img, 'A1') >>> wb.save('logo.xlsx') 折疊列>>> import openpyxl >>> wb = openpyxl.Workbook() >>> ws = wb.create_sheet() >>> ws.column_dimensions.group('A','D', hidden=True) >>> wb.save('group.xlsx') 與pandas和NumPy一起工作NumPy支持openpyxl已經(jīng)為NumPy類型的浮點(diǎn)數(shù)、整數(shù)和布爾型提供了支持。使用pandas的時(shí)間戳類型支持DateTimes Working with Pandas Dataframes
from openpyxl.utils.dataframe import dataframe_to_rows wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) 雖然pandas本身支持轉(zhuǎn)換為Excel,但這為客戶端代碼提供了額外的靈活性,包括將dataframes直接傳輸?shù)轿募哪芰Α?/p> 將一個(gè)dataframe轉(zhuǎn)換為高亮顯示標(biāo)題和索引的工作表 wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) for cell in ws['A'] + ws[1]: cell.style = 'Pandas' wb.save("pandas_openpyxl.xlsx") 或者,如果你只想轉(zhuǎn)換數(shù)據(jù)你可以使用write-only模式 ![]() 這段代碼和標(biāo)準(zhǔn)的工作簿同樣適用 將工作表轉(zhuǎn)換為Dataframe要將工作表轉(zhuǎn)換為Dataframe,您可以使用values屬性。如果工作表沒有標(biāo)題或索引,這很容易 df = DataFrame(ws.values) 如果工作表確實(shí)有標(biāo)題或索引,比如由pandas創(chuàng)建的,那么就需要做更多的工作 data = ws.values cols = next(data)[1:] data = list(data) idx = [r[0] for r in data] data = (islice(r, 1, None) for r in data) df = DataFrame(data, index=idx, columns=cols)
|
|