用python批量處理Excel表格,處理結果又快又好,做辦公室最靚的那個仔


    使用python批量處理Excel數據

  •     讓你根據Excel上所有人的身份證號碼,提取出公司員工的生日

  •     讓你每個月都將公司所有人的考勤數據整理一下

    類似這樣的格式化的重復操作,你還在每次都使用的人工去逐條查詢處理么?下次再遇到這種情況,請一定不要再傻傻地每次都手動查詢處理。可以快速整理出一個python腳本來批量處理Excel數據,周期性處理的數據更是一了百了哦。

    首先我們需要安裝一個xlrd和xlwt的python,其中xlrd是用來讀取Excel表格數據,xlwt是用來寫Excel表格數據的。具體python安裝可以參考python學習三——庫安裝。

xlrd

    首先我們學習一下Excel表格讀寫庫——xlrd

  •  打開excel文件並獲取所有sheet

import xlrd# 打開Excel文件讀取數據data = xlrd.open_workbook('聯系人.xls')sheet_name = data.sheet_names() # 獲取所有sheet名稱print(sheet_name) # ['sheet1', 'sheet2']
  •  根據sheet索引或者名稱獲取sheet內容,同時獲取sheet名稱、行數、列數

 

# 根據sheet索引或者名稱獲取sheet內容,同時獲取sheet名稱、列數、行數sheet2 = data.sheet_by_index(1)print('sheet2名稱:{}\nsheet2列數: {}\nsheet2行數: {}'.format(sheet2.name, sheet2.ncols, sheet2.nrows))# sheet2名稱:sheet2# sheet2列數: 7# sheet2行數: 5

 

 

  • 獲取指定單元格的內容

# 獲取指定單元格的內容print(sheet1.cell(1,0).value) # 第2 行1列內容:機構名稱print(sheet1.cell_value(1,0)) # 第2 行1列內容:機構名稱print(sheet1.row(1)[0].value) # 第2 行1列內容:機構名稱

xlwt

    接下來我們我們在看看xlwt,其實兩個庫的使用方法都是差不多的。具體代碼如下:

import xlwt#創建一個Excel對象write_book = xlwt.Workbook()#在對象中添加一個sheet1表write_sheet = xlwt.Workbook.add_sheet(write_book,sheetname='cainiaoxiaobai')#在第二行第三列的單元格插入數據(默認從0開始計數)write_sheet.write(1,2,"菜鳥小白的學習分享")#保存Excel對象為test.xlswrite_book.save(filename_or_stream='test.xls')

運行產生的Excel表格如下

 

    看到這你是不是以為就結束了,當然不會大家更加方便的完成表格處理,我這邊將常見的模塊,直接進行調用就能夠滿足常用的Excel表格數據的批量處理。

# _*_coding=utf-8_*_import xlwtimport xlrdclass WriteExcel: def __init__(self, sheet_name=None): """初始化寫表格對象 :param sheet_name: 寫表格的sheet名,默認為cainiaoxiaobai """ if sheet_name: self.sheetname = sheet_name else: self.sheetname = "cainiaoxiaobai" self.workbook = xlwt.Workbook() self.worksheet = self.workbook.add_sheet(sheetname=self.sheetname) def write_values(self, row, col, values): """向目標sheet的某個行列寫入值 :param row: 目標行 :param col: 目標列 :param values: 想要寫入的值 """ self.worksheet.write(row, col, values) def save_file(self, filename=None): """保存表格 :param filename: 保存的文件名 """ if filename: self.filename = filename else: self.filename = "菜鳥小白的學習分享.xls" self.workbook.save(self.filename)class OpenExcel: def __init__(self, file_name=None, sheet_id=None): """初始化讀取Excel表格 :param file_name: 需要讀取的表格名 :param sheet_id: 需要讀取的表格sheet """ if file_name: self.file_name = file_name self.sheet_id = sheet_id else: self.file_name = '菜鳥小白.xlsx' self.sheet_id = 0 self.data = self.get_data() def get_data(self): """讀取表格數據 :return: 返回讀取的表格數據 """ data = xlrd.open_workbook(self.file_name) tables = data.sheets()[self.sheet_id] return tables def get_lines(self): """讀取表格總行數 :return: 返回表格總行數 """ tables = self.data return tables.nrows def get_cols(self): """讀取表格總行數 :return: 返回表格總列數 """ tables = self.data return tables.ncols def get_value(self, row, col): """讀取表格中具體的行、列對應的值 :param row: 目標行 :param col: 目標列 :return: 返回目標行、列的值 """        return self.data.cell_value(row, col)

    這個模塊支持的功能和參數作用直接見程序批注。使用方法就只需新建一個主程序進行調用就好了。

import ReadAndWriteExcelopenexcel = ReadAndWriteExcel.OpenExcel(file_name="菜鳥小白.xls",sheet_id=0)write_excel = ReadAndWriteExcel.WriteExcel()for i in range(1,openexcel.get_lines()): #將目標表格的姓名拷貝在整理的表格中 write_excel.write_values(i, 0, openexcel.get_value(i,0)) #將身份證號碼中的生日提取出來 birthday = openexcel.get_value(i,1)[6:13] #將生日寫入到目標表格中 write_excel.write_values(i,1,birthday)write_excel.save_file(filename="菜鳥小白的學習分享.xls")

    實現效果如下:

    后面你們在遇到需要反復批量處理Excel表格的事情,就直接使用這個模塊,自己建一個數據處理的主程序,一次搞定后面所有的重復工作。是不是非常地簡單呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM