1. 程式人生 > >利用Python讀取EXCEL 檔案

利用Python讀取EXCEL 檔案

小編今天從專案需求來給大家介紹讀取EXCEL的作用!

        由於專案要進行重新架構和設計開發,專案本身的資料庫中的資料需要遷移,但是公司內部的一些新增資料由於專案的某一個模組無法通過執行API介面來處理資料庫資料,這個時候,就需要給公司各個部門下發統一格式的EXCEL表格,將近期的資料進行統計。那麼,相對大量的EXCEL要向資料庫中手動新增,過於耗時。介於方便和時間效率的考慮,利用PYTHON進行讀取excel, 並儲存到資料庫中,這樣可以節省大量的時間,同時,也間接的保護了資料庫的資料。相對而言,公司的專案比較注重資料的保護,涉密,對資料庫的保護很重要,我們要對他的操作十分小心。

下面是一個操作EXCEL,自己實現的程式碼:

import openpyxl
import time
from flask import Flask

from utils.oa_database import SQLALchemy

class Config
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = 'oracle://使用者名稱:密碼@ip地址/資料庫名'
    SQLALCHEMY_TRACK_MODIFICATIONS = FALSE

class ProjectManagement(object):
    def __init__(self, path):
        # 初始化app
        self.app = Flask(__name__)
        self.app.config.from_object(Config)
        self.db = SQLALchemy(self.app)
        # 開啟EXCEL表格  path 是檔案的絕對路徑
        self.wb = openpyxl.load_workbook(path)
        # 操作單元格   Sheet1就是第一個單元格,如果不傳, 預設第一個
        self.sheet = self.wb.get_sheet_by_name("Sheet1")
        small_list = list()
        new_list = list()
        write_list()
        last = list()
        finish_lish()
        # B4就是某一個cell單元格  獲取單元格為B4的值
        self.data = self.sheet["B4"].value
        for i in range(10, self.sheet.max_raw//獲取當前表格的最大行(無資料)):
            for j in range(0, 6):
                # 獲取10-100行, 0-6列的資料
                data = self.sheet.cell(row=i, column=j).value
        print(data)

        def run(self):
            # 操作資料庫例項方法
            pass


if __name__ == '__main__':
    project_management("絕對路徑/檔名.xlsx")
    

一、用xlrd和xlwt讀寫excel

    首先下載安裝xlrd和xlwt這兩個庫。

  1、開啟excel

    readbook = xlrd.open_workbook(r'\test\canying.xlsx')

  2、獲取讀入的檔案的sheet

    sheet = readbook.sheet_by_index(1)#索引的方式,從0開始
    sheet = readbook.sheet_by_name('sheet2')#名字的方式

  3、獲取sheet的最大行數和列數

    nrows = sheet.nrows#行
    ncols = sheet.ncols#列

  4、獲取某個單元格的值

    lng = table.cell(i,3).value#獲取i行3列的表格值
    lat = table.cell(i,4).value#獲取i行4列的表格值

  5、開啟將寫的表並新增sheet

    writebook = xlwt.Workbook()#開啟一個excel
    sheet = writebook.add_sheet('test')#在開啟的excel中新增一個sheet

  6、將資料寫入excel

     sheet.write(i,0,result[0])#寫入excel,i行0列
     sheet.write(i,1,result[1])

  7、儲存

     writebook.save('answer.xls')#一定要記得儲存

  二、使用openpyxl庫讀寫excel

    xlrd和xlwt處理的是xls檔案,單個sheet最大行數是65535,如果有更大需要的,建議使用openpyxl函式,最大行數達到1048576。 
    如果資料量超過65535就會遇到:ValueError: row index was 65536, not allowed by .xls format

    1、開啟excel

      

    2、獲取開啟的excel的sheet內容

       

    3、獲取sheet的最大行數和列數

      

    4、獲取某個單元格的值

      print(ws.cell(1,1).value)

    5、開啟將寫的表並新增sheet

      

    6、儲存