ä¹åç»å¤§å®¶åè¿å ç¯å
³äºPandasæ¹éæä½Excelç宿å
容ï¼ååä¸éãä»å¤©ååäº«ä¸æ³¢ç¨openpyxlæä½Excelçæç« ã
åç§æ°æ®éè¦å¯¼å
¥Excelï¼å¤ä¸ªExcelè¦åå¹¶ï¼ç®åï¼Pythonå¤çExcelæä»¶æå¾å¤åºï¼openpyxlç®æ¯å
¶ä¸åè½åæ§è½åçæ¯è¾å¥½çä¸ä¸ªãæ¥ä¸æ¥æå°ä¸ºå¤§å®¶ä»ç»åç§Excelæä½ã
æå¼Excelæä»¶
æ°å»ºä¸ä¸ªExcelæä»¶
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
æå¼ç°æExcelæä»¶
    >>> from openpyxl import load_workbook
    >>> wb2 = load_workbook('test.xlsx')
æå¼å¤§æä»¶æ¶ï¼æ ¹æ®éæ±ä½¿ç¨åªè¯»æåªå模å¼åå°å
åæ¶èã
wb = load_workbook(filename='large_file.xlsx', read_only=True)
wb = Workbook(write_only=True)
è·åãå建工ä½è¡¨
è·åå½åæ´»å¨å·¥ä½è¡¨ï¼
    >>> ws = wb.active
å建æ°çå·¥ä½è¡¨ï¼
    >>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
    # or
    >>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
    # or
    >>> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position
使ç¨å·¥ä½è¡¨ååè·åå·¥ä½è¡¨ï¼
    >>> ws3 = wb["New Title"]
è·åææçå·¥ä½è¡¨åç§°ï¼
    >>> print(wb.sheetnames)
    ['Sheet2', 'New Title', 'Sheet1']
使ç¨for循ç¯éåææçå·¥ä½è¡¨ï¼
    >>> for sheet in wb:
    ...     print(sheet.title)
ä¿å
ä¿åå°æµä¸å¨ç½ç»ä¸ä½¿ç¨ï¼
    >>> from tempfile import NamedTemporaryFile
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    >>> with NamedTemporaryFile() as tmp:
            wb.save(tmp.name)
            tmp.seek(0)
            stream = tmp.read()
ä¿åå°æä»¶ï¼
    >>> wb = Workbook()
    >>> wb.save('balances.xlsx')
ä¿å为模æ¿ï¼
    >>> wb = load_workbook('document.xlsx')
    >>> wb.template = True
    >>> wb.save('document_template.xltx')
åå
æ ¼
åå
æ ¼ä½ç½®ä½ä¸ºå·¥ä½è¡¨çé®ç´æ¥è¯»åï¼
    >>> c = ws['A4']
为åå
æ ¼èµå¼ï¼
    >>> ws['A4'] = 4
    >>> c.value = 'hello, world'
å¤ä¸ªåå
æ ¼ å¯ä»¥ä½¿ç¨åç访é®åå
æ ¼åºåï¼
    >>> cell_range = ws['A1':'C2']
ä½¿ç¨æ°å¼æ ¼å¼ï¼
    >>> # set date using a Python datetime
    >>> ws['A1'] = datetime.datetime(2010, 7, 21)
    >>>
    >>> ws['A1'].number_format
    'yyyy-mm-dd h:mm:ss'
使ç¨å
¬å¼ï¼
    >>> # add a simple formula
    >>> ws["A1"] = "=SUM(1, 1)"
åå¹¶åå
æ ¼æ¶ï¼é¤å·¦ä¸è§åå
æ ¼å¤ï¼ææåå
æ ¼é½å°ä»å·¥ä½è¡¨ä¸å é¤ï¼
    >>> ws.merge_cells('A2:D2')
    >>> ws.unmerge_cells('A2:D2')
    >>>
    >>> # or equivalently
    >>> 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)Â
è¡ãå
å¯ä»¥åç¬æå®è¡ãåãæè
è¡åçèå´ï¼
    >>> colC = ws['C']
    >>> col_range = ws['C:D']
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]
å¯ä»¥ä½¿ç¨
Worksheet.iter_rows()
æ¹æ³éåè¡ï¼
    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in row:
    ...        print(cell)
                       Â
| | | | | |
åæ ·ç
Worksheet.iter_cols()
æ¹æ³å°éååï¼
    >>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    ...     for cell in col:
    ...         print(cell)
                       Â
| | | | | |
éåæä»¶çææè¡æåï¼å¯ä»¥ä½¿ç¨
Worksheet.rows
屿§ï¼
    >>> ws = wb.active
    >>> ws['C9'] = 'hello world'
    >>> tuple(ws.rows)
    ((, , ),     (, , ),     (, , ),     (, , ),     (, , ),     (, , ),     (, , ),     (, , ),     (, , ))
| | | | | | | | | | | | | | | | | | | | | | | | | | |
æ
Worksheet.columns
屿§ï¼
    >>> tuple(ws.columns)
    ((,     ,     ,     ,     ,     ,     ...     ,     ,     ),     (,     ,     ,     ,     ,     ,     ,     ,     ))
| | | | | | | | | | | | | | | | | |
使ç¨
Worksheet.append()
æè
è¿ä»£ä½¿ç¨
Worksheet.cell()
æ°å¢ä¸è¡æ°æ®ï¼
    >>> for row in range(1, 40):
    ...     ws1.append(range(600))
    >>> for row in range(10, 20):
    ...     for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
æå
¥æä½æ¯è¾éº»ç¦ãå¯ä»¥ä½¿ç¨
Worksheet.insert_rows()
æå
¥ä¸è¡æå è¡ï¼
     >>> from openpyxl.utils import get_column_letter
     >>> ws.insert_rows(7)Â
     >>> row7 = ws[7]
     >>> for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))
Worksheet.insert_cols()
æä½ç±»ä¼¼ã
Worksheet.delete_rows()
å
Worksheet.delete_cols()
ç¨æ¥æ¹éå é¤è¡ååã
åªè¯»åå¼
使ç¨
Worksheet.values
屿§éåå·¥ä½è¡¨ä¸çææè¡ï¼ä½åªè¿ååå
æ ¼å¼ï¼
    for row in ws.values:
       for value in row:
         print(value)
Worksheet.iter_rows()
å
Worksheet.iter_cols()
å¯ä»¥è®¾ç½®
values_only
åæ°æ¥ä»
è¿ååå
æ ¼çå¼ï¼
    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    ...   print(row)
    (None, None, None)
    (None, None, None)