關注公眾號:Python爬蟲數據分析挖掘,免費獲取更多開源項目源碼
常見讀寫excel 的庫有以下 幾個(附案例)
- xlwt
- xlrd
- xlutils
- openpyxl
- pandas
xlwt
主要用於對xls文件進行寫入操作
import xlwt #創建workbook book = xlwt.Workbook() #添加sheet頁 table = book.add_sheet('Over', cell_overwrite_ok=True) sheet = book.add_sheet('測試表') print(type(table)) print(table) print(type(sheet)) print(sheet) #寫入 b2單元格內容 sheet.write(1,1, '你好啊') # 設置字體樣式 style = xlwt.XFStyle() font = xlwt.Font() font.name = '楷體' font.bold = True style.font = font table.write(0,0, '世界嗎?', style) book.save(filename_or_stream='xlwt寫入xls文件內容.xls')
xlrd
主要用於對xls文件進行讀取
import xlrd #打開workbook data = xlrd.open_workbook('xlwt寫入xls文件內容.xls') #所有sheet頁 名稱 print(data.sheet_names()) table0 = data.sheets()[0] table = data.sheet_by_index(0) # 獲取sheet頁 table = data.sheet_by_name('Over') # 已有內容的行數和列數 nrows = table.nrows ncolumns = table.ncols print(type(nrows), nrows) print(type(ncolumns), ncolumns) # 獲取單元格內容的幾種方式 print(table.row_values(0)) for row in range(nrows): print(table.row_values(row)) print(table.cell(0,0).value) print(table.row(0)[0].value)
xlutils
對xlrd 和 xlwt進行了封裝 , 在使用前會先下載這兩個模塊的依賴
import xlwt,xlrd from xlutils.copy import copy data = xlrd.open_workbook('xlwt寫入xls文件內容.xls', formatting_info=True) excel = copy(wb=data)#將xlrd對象拷貝轉化為xlwt對象 excel.save('拷貝文件.xls')
openpyxl
可對xlsx 進行處理
import openpyxl # 創建workbook data = openpyxl.Workbook() # 添加sheet頁 data.create_sheet('first') # 獲取激活頁(默認第一頁) table = data.active #寫入單元格內容 table.cell(1,1, '值') # 保存文件 data.save('openpyxl寫文件.xlsx') # 打開文件 獲取workbook data = openpyxl.load_workbook('openpyxl寫文件.xlsx') # 獲取sheet頁 table = data.get_sheet_by_name('Sheet') nrows = table.rows ncols = table.columns print(type(nrows)) for row in nrows: print(row) line = [col.value for col in row] print(line) print(table.cell(1,1).value)
pandas
pandas 主要用於數據分析 ,在 對excel 操作方面也是非常方便
import numpy as np import pandas as pd # 生成數據 df = pd.DataFrame(np.random.randn(10, 4)) # 寫入 excel df.to_excel('foo.xlsx', sheet_name='Sheet1') # 讀取excel df2 = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']) print(df2)