看到一篇很好的python讀寫excel方式的對比文章: 用Python讀寫Excel文件html
關於其餘版本的excel,能夠經過他提供的連接教程進行學習。python
XlsxWriter:git
https://github.com/jmcnamara/XlsxWritergithub
http://xlsxwriter.readthedocs.orgexpress
openpyxl: http://openpyxl.readthedocs.io/en/default/ide
Microsoft excel API:https://msdn.microsoft.com/en-us/library/fp179694.aspx函數
xlrd用來讀取excel文件,xlwt用來寫excel文件,它們合做來對excel進行操做。學習
官方文檔:http://www.python-excel.org/ui
xlrd官方介紹:https://pypi.python.org/pypi/xlrd/1.0.0spa
xlwt官方介紹:https://pypi.python.org/pypi/xlwt/1.1.2
xlutils官方介紹:https://pypi.python.org/pypi/xlutils
http://xlutils.readthedocs.io/en/latest/
Library for developers to extract data from Microsoft Excel (tm) spreadsheet files Extract data from Excel spreadsheets (.xls and .xlsx, versions 2.0 onwards) on any platform. Pure Python (2.6, 2.7, 3.2+). Strong support for Excel dates. Unicode-aware.
翻譯過來總結就是:
xlrd 能夠在任意平臺上讀取的excel爲: .xls以及 .xlsx 。
xlrd支持和的python版本是: 2.6,2.7 , 3.2+。
Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.6, 3.3+ This is a library for developers to use to generate spreadsheet files compatible with Microsoft Excel versions 95 to 2003.
翻譯過來總結就是:
xlwt支持的excel版本是: Microsoft excel版本 95---2003,也就是 xls文件。
xlwt支持的python版本是:2.6 , 3.3+.
This package provides a collection of utilities for working with Excel files. Since these utilities may require either or both of the xlrd and xlwt packages, they are collected together here, separate from either package. Currently available are: xlutils.copy Tools for copying xlrd.Book objects to xlwt.Workbook objects. xlutils.display Utility functions for displaying information about xlrd-related objects in a user-friendly and safe fashion. xlutils.filter A mini framework for splitting and filtering Excel files into new Excel files. xlutils.margins Tools for finding how much of an Excel file contains useful data. xlutils.save Tools for serializing xlrd.Book objects back to Excel files. xlutils.styles Tools for working with formatting information expressed in styles.
翻譯過來總結就是:
若是須要在 xlrd以及 xlwt之間進行交互的話,好比拷貝 xlrd 到 xlwt 須要用到xlutils。
目前提供了 copy、display、filter、margins、Save、styles幾個函數。
安裝 xlrd 和 xlwt
pip install xlrd pip install xlwt pip install xlutils pip list xlrd (1.0.0) xlutils (2.0.0) xlwt (1.1.2)
#coding='utf-8' import xlwt from datetime import datetime def set_style(font_name,font_height,bold=False): style=xlwt.XFStyle() font=xlwt.Font() font.name=font_name # 'Times New Roman' font.height=font_height font.bold=bold font.colour_index=4 borders=xlwt.Borders() borders.left=6 borders.right=6 borders.top=6 borders.bottom=6 style.font=font style.borders=borders return style def write_to_excel_xlwt(): '''Write content to a new excel''' new_workbook=xlwt.Workbook() new_sheet=new_workbook.add_sheet("SheetName_test") new_sheet.write(0,0,"hello") #write cell with style new_sheet.write(0,1,"world",set_style("Times New Roman", 220, True)) style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',num_format_str='#,##0.00') style1 = xlwt.easyxf(num_format_str='D-MMM-YY') new_sheet.write(1, 0, 1234.56, style0) new_sheet.write(1, 1, datetime.now(), style1) #write cell with formula new_sheet.write(2,0,5) new_sheet.write(2,1,8) new_sheet.write(3,0, xlwt.Formula("A3+B3")) new_workbook.save(r"NewCreateWorkbook.xls") #if change to xlsx,then open failed if __name__=="__main__": write_to_excel_xlwt()
代碼執行以後,在當前路徑下生成excel文件 「NewCreateWorkbook.xls」。內容以下 :
#coding='utf-8' import xlrd def read_excel_xlrd(): '''Read Excel with xlrd''' #file TC_workbook=xlrd.open_workbook(r"NewCreateWorkbook.xls") #sheet all_sheets_list=TC_workbook.sheet_names() print("All sheets name in File:",all_sheets_list) first_sheet=TC_workbook.sheet_by_index(0) print("First sheet Name:",first_sheet.name) print("First sheet Rows:",first_sheet.nrows) print("First sheet Cols:",first_sheet.ncols) second_sheet=TC_workbook.sheet_by_name("SheetName_test") print("Second sheet Rows:",second_sheet.nrows) print("Second sheet Cols:",second_sheet.ncols) first_row=first_sheet.row_values(0) print("First row:",first_row) first_col=first_sheet.col_values(0) print("First Column:",first_col) # cell cell_value=first_sheet.cell(1,0).value print("The 1th method to get Cell value of row 2 & col 1:",cell_value) cell_value2=first_sheet.row(1)[0].value print("The 2th method to get Cell value of row 2 & col 1:",cell_value2) cell_value3=first_sheet.col(0)[1].value print("The 3th method to get Cell value of row 2 & col 1:",cell_value3) if __name__=="__main__": read_excel_xlrd()
運行以後,控制檯輸出以下 :
All sheets name in File: ['SheetName_test'] First sheet Name: SheetName_test First sheet Rows: 4 First sheet Cols: 2 Second sheet Rows: 4 Second sheet Cols: 2 First row: ['hello', 'world'] First Column: ['hello', 1234.56, 5.0, ''] The 1th method to get Cell value of row 2 & col 1: 1234.56 The 2th method to get Cell value of row 2 & col 1: 1234.56 The 3th method to get Cell value of row 2 & col 1: 1234.56
#coding='utf-8' import xlrd import xlwt from xlutils.copy import copy def write_to_existed_file(): '''Write content to existed excel file with xlrd&xlutils&xlwt''' rb = xlrd.open_workbook(r"NewCreateWorkbook.xls",formatting_info=True) wb = copy(rb) ws = wb.get_sheet(0) font=xlwt.Font() font.name="Times New Roman" font.height=220 font.bold=False borders = xlwt.Borders() borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 2 cell_style = xlwt.XFStyle() cell_style.font = font cell_style.borders = borders cell_style.pattern = pattern ws.write(6,7,"hello world",cell_style) wb.save(r"NewCreateWorkbook.xls") if __name__=="__main__": write_to_existed_file()
運行以後,excel文件內容以下: