介紹python
xlrd,xlwt和xlutils是用Python處理Excel文檔(*.xls)的高效率工具。其中,xlrd只能讀取xls,xlwt只能新建xls(不能夠修改),xlutils能將xlrd.Book轉爲xlwt.Workbook,從而得以在現有xls的基礎上修改數據,並建立一個新的xls,實現修改。git
(如下屬性或方法並不是所有,須要更多屬性請參看文檔;建議先參考文末Demo,再深刻了解)https://pypi.org/project/xlutils/github
屬性方法介紹數據庫
copy: 將xlrd.Book轉爲xlwt.Workbook styles: 讀取xlrd.Workbook的每個單元格的style display: 簡單而安全地呈現xlrd讀取的數據 filter: 拆分與整合多個xls文件 margins: 查看錶格稀疏程度 save: 序列化xlrd.Book,轉存爲binary xls或stream
Tips安全
1. xlrd.open_workbook(fomatting_info=):當formatting_info=Ture,讀取workbook並保留格式 2. xlrd.open_workbook(on_demand=): 當on_demand=True,只有被要求時纔將worksheet載入內存,讀取大文件時使用 3. xlwt.Worksheet.flush_row_data(): 減小內存佔用,被刷新的行不能再訪問或修改,建議每1000行刷新一次(若列不少當調整) 4. xlwt.Workbook(encoding=): 選擇建立的workbook的編碼
簡單案例一:ide
import xlrd from xlutils import copy if __name__ == "__main__": # id name age # 1 Python 30 # 2 Perl 33 # 3 Ruby 20 # 打開要讀的xls rd_book = xlrd.open_workbook('origin.xls') # 複製爲新的xls wt_book = copy.copy(rd_book) # 修改新的xls wt_sheet = wt_book.get_sheet(0) wt_sheet.write(1, 1, 'Python3') # 保存修改 wt_book.save('copy.xls') # id name age # 1 Python3 30 # 2 Perl 33 # 3 Ruby 20
查找資料時看到的一個github地址,裏邊有一些python函數以及模塊的介紹看着還不錯能夠收藏下:https://github.com/jumper2014/PyCodeComplete函數
簡單案例二:工具
# 該代碼還有部分函數,其餘部分功能時查詢數據庫獲得元祖數值,一下代碼適合參考: # 讀取表格模板中的表頭數據以及樣式,在基礎上添加插入數據 import xlrd import xlwt from xlutils.copy import copy import time path_template =os.path.dirname(os.path.dirname(os.path.abspath('.'))) # 拼接模板文件路徑 dir = path_template + r'\module\日報表模板.xls' # 拼接生成數據文件路徑 file_dir = path_template + r'\report_file' def w_table(): # 讀取工做簿 objWB = xlrd.open_workbook(dir, formatting_info=True) # 對象變量賦值 objSht = objWB.sheet_by_name('日報表') # 複製工做簿 newWB = copy(objWB) #獲取第一個工做表 newSht = newWB.get_sheet(0) #定義style y樣式 Style = xlwt.XFStyle() #定義Font 字體 Font = xlwt.Font() Font.name = '微軟雅黑' Font.bold = False Font.height = 10 * 20 Style.font = Font #定義Borders 邊框 Borders = xlwt.Borders() Borders.top = xlwt.Borders.NO_LINE Borders.bottom = xlwt.Borders.NO_LINE Borders.left = xlwt.Borders.NO_LINE Borders.right = xlwt.Borders.NO_LINE Style.borders = Borders #定義Alignment 對齊方式 Alignment = xlwt.Alignment() Alignment.horz = xlwt.Alignment.HORZ_CENTER Alignment.Vert = xlwt.Alignment.VERT_CENTER Style.alignment = Alignment #輸入數據和相應Style ['速運天津區', 0, 0, 180.0, 13923.34, '', '', 450.0, 13923.34, 180.0, '', '', ''] save_data = select_date() count = 2 line_list = {1:0,4:1,5:2,12:1,17:3,18:4,20:5,19:6,22:7,23:8,24:9,26:10,28:11,25:12} for data in save_data: if len(data): for line_k, line_v in line_list.items(): newSht.write(count, line_k, data[line_v], Style) # (行,列,值) count += 1 print(count) else: print('該列表爲空!') #保存 newWB.save(file_dir +'\\'+ time.strftime("%Y-%m-%d") + "日誌統計.xls") w_table() # 執行函數生成表格寫入數據