xlrd模塊
Python的三方庫xlrd用於對excel文件進行讀取,可以是“.xls”或“.xlsx”格式(舊版本可能不支持“.xlsx”)。
下載安裝:https://pypi.org/project/xlrd/#files,或者使用pip安裝 “pip install xlrd”
API文檔:https://xlrd.readthedocs.io/en/latest/api.html
xlrd常用的方法:
- work_book = xlrd.open_workbook(filename):打開指定路徑的excel文件,返回excel處理對象,但無法打開不存在的文件。
- work_book.nsheets:返回excel中的sheet個數。
- work_book.sheets():加載並返回excel中的所有sheet對象組成的列表。
- work_book.sheet_by_index(sheetx):返回對應索引的sheet對象,索引范圍為range(work_book.nsheets)。
- work_book.sheet_by_name(sheet_name):返回對應sheet名稱的sheet對象。
- work_book.sheet_names():返回excel中所有sheet名稱組成的列表。
- sheet.book:sheet所屬的work_book。
- sheet.name:sheet的名稱。
- sheet.nrows:sheet中的行數。
- sheet.ncols:sheet中的列數。
- sheet.row(rowx):返回對應行的cell對象組成的列表。
- sheet.row_slice(rowx, start_colx=0, end_colx=None):返回對應行的cell對象組成的列表,也自定義切片獲取行的cell對象列表。
- sheet.col(colx):返回對應列的cell對象組成的列表。
- sheet.col_slice(colx, start_rowx=0, end_rowx=None):返回對應列的cell對象組成的列表,也自定義切片獲取行的cell對象列表。
- sheet.cell(rowx, colx):返回對應單元格的cell對象。
- sheet.cell_value(rowx, colx):返回對應單元格的值。
- sheet.row_len(rowx):返回對應行的有效單元格數。
- sheet.get_rows():返回一個行的迭代器,每次迭代返回一個cell對象組成的列表,即這一行的cell對象列表。
- sheet.row_values(rowx, start_colx=0, end_colx=None):返回對應行的值的列表,也可以自定義切片獲取某些值。
- sheet.col_values(colx, start_rowx=0, end_rowx=None):返回對應列的值的列表,也可以自定義切片獲取某些值。
- sheet.cell(rowx, colx).value:返回對應單元格的值。
注:
- 無論傳入的參數,還是獲取出來的數據,都是Unicode格式的。
- xlrd的索引都是從0開始的。
- xlrd中還有很多其他方法和屬性,可以自行查閱API文檔。
xlwt模塊
Python的三方庫xlwt用於新建一個“.xls”格式excel文件。注意只能是“.xls”格式的excel,保存為“.xlsx”時(我用office是不能打開的,但是用WPS可以打開),將其后綴名保存為“.zip”后發現,它是不能打開的,但是“.xlsx”格式的文件本身就是基於xml的壓縮文件,改了后綴名后是可以打開的,所以xlwt確實是不能保存為“.xlsx”文件的。(這個在API文檔中也有說明)
下載安裝:https://pypi.org/project/xlwt/#files 或者使用pip安裝“pip install xlwt”
xlwt常用的方法:
- work_book = xlwt.Workbook(encoding='ascii'):新建一個excel對象(必須使用save方法才能生成最后的excel文件),可以設置編碼格式,默認是ASCII,這時候代碼中操作excel最好都使用Unicode字符串,特別是有中文的情況下,必須使用Unicode,不然會編碼報錯;也可以UTF-8(或其他,我沒試過),這時候除了最后執行save方法保存時文件路徑必須使用Unicode字符串外,其他的操作都可以是普通字符串。
- work_book.save(filename):將excel對象保存為excel文件,filename可以是相對路徑,也可以是絕對路徑,但是路徑中的目錄(文件夾)是必須存在的,而且不能存在同名文件,不然會報錯,如果路徑中包含中文,注意使用Unicode字符串。
- work_book.add_sheet(sheetname, cell_overwrite_ok=False):在work_book中添加一個指定名稱的sheet頁,當參數cell_overwrite_ok設為True時,sheet中的單元格即便被多次重寫也不會報錯。
- sheet.write(r, c, label='', style=Style.default_style):在單元格“(r, c)”中寫入值“label”,可以指定單元格的格式style。
- sheet.merge(r1, r2, c1, c2, style=Style.default_style):合並單元格。
- sheet.write_merge(r1, r2, c1, c2, label="", style=Style.default_style):合並單元格,並寫入值。
- sheet.row(indx):獲取行對象,可以通過行對象的值來獲取和設置行屬性,比如設置行高:sheet.row(0).height=40。
- sheet.col(indx):獲取列對象,可以通過列對象的值來獲取和設置列屬性,比如設置列寬:sheet.col0).width=40
- sheet.row_height(row):獲取行高。
- sheet.col_width(col):獲取列寬。
- xlwt.Formula(s):s為excel中的公式字符串,可以將這個Formula對象作為write等方法的值傳入進去。比如:
- xlwt.Formula('HYPERLINK("#%s!%s%s";"%s")' % (sheet_name, col, row, value)):設置Excel內的超鏈接,這部分整體作為value傳入write等寫入方法中,其中的第一個雙引號為Excel中的公式表示,不能用單引號或三引號;value為寫入單元格的值,sheet_name為鏈接的目的地址,col(1,2,3...)和row(A,B,C...)表示連接到sheet_name的單元格位置。
- xlwt.Formula('HYPERLINK("https://www.baidu.com";"百度")'):設置Excel外的鏈接。
- xlwt.Formula('A1*B1'):設置某個單元格的值為“A1*B1”的值。
- xlwt.Formula('SUM(A1, B1)'):設置某個單元格的值為“SUM(A1, B1)”的值。
設置單元格字體:
1 cell_font = xlwt.Font() # 字體對象 2 cell_font.name = 'Times New Roman' # 設置字體 3 cell_font.bold = True # 粗體 4 cell_font.underline = True # 下划線 5 cell_font.italic = True # 斜體 6 cell_style = xlwt.XFStyle() # 格式對象 7 cell_style.font = cell_font # 將字體樣式賦給格式對象中的字體 8 sheet.write(1, 0, value, cell_style) # 在單元格寫入等方法中將格式參數傳進去
設置單元格邊框:
1 cell_borders = xlwt.Borders() # 邊框對象 2 cell_borders.left = xlwt.Borders.DASHED # 設置左邊框(常用值:NO_LINE(無邊框), THIN(薄), MEDIUM(中), THICK(厚),DASHED(虛線), DOTTED(點虛線)) 3 cell_borders.right = xlwt.Borders.DASHED 4 cell_borders.top = xlwt.Borders.DASHED 5 cell_borders.bottom = xlwt.Borders.DASHED 6 cell_style = xlwt.XFStyle() # 格式對象 7 cell_style.borders = cell_borders # 將邊框樣式賦給格式對象 8 sheet.write(0, 0, value, cell_style)
設置單元格背景色:
1 cell_pattern = xlwt.Pattern() 2 cell_pattern.pattern = xlwt.Pattern.SOLID_PATTERN # SOLID_PATTERN 或 NO_PATTERN 3 cell_pattern.pattern_fore_colour = 5 # 顏色(不止這些):0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray 4 cell_style = xlwt.XFStyle() 5 cell_style.pattern = cell_pattern 6 sheet.write(0, 0, value, cell_style)