Python讀取Excel的方法執行個體分析

來源:互聯網
上載者:User
本文執行個體講述了Python讀取Excel的方法。分享給大家供大家參考。具體如下:

今天需要從一個Excel文檔(.xls)中導資料到資料庫的某表,開始是手工一行行輸的。後來想不能一直這樣,就用Python寫了下面的代碼,可以很方便應對這種情境。比如利用我封裝的這些方法可以很方便地產生匯入資料的SQL。 當然熟悉Excel編程的同學還可以直接用VBA寫個指令碼產生插入資料的SQL。

還可以將.xls檔案改為.csv檔案,然後通過SQLyog或者Navicat等工具匯入進來,但是不能細粒度控制(比如不滿足某些條件的某些資料不需要匯入,而用程式就能更精細地控制了;又比如重複資料不能重複匯入;還有比如待匯入的Excel表格和資料庫中的表的列不完全一致) 。

我的Python版本是3.0,需要去下載xlrd 3: http://pypi.python.org/pypi/xlrd3/ 然後通過setup.py install命令安裝即可

import xlrd3'''author: jxqlove?本代碼主要封裝了幾個操作Excel資料的方法'''''' 擷取行視圖根據Sheet序號擷取該Sheet包含的所有行,傳回值類似[ ['a', 'b', 'c'], ['1', '2', '3'] ]sheetIndex指示sheet的索引,0表示第一個sheet,依次類推xlsFilePath是Excel檔案的相對或者絕對路徑'''def getAllRowsBySheetIndex(sheetIndex, xlsFilePath):  workBook = xlrd3.open_workbook(xlsFilePath)  table = workBook.sheets()[sheetIndex]  rows = []  rowNum = table.nrows # 總共行數  rowList = table.row_values  for i in range(rowNum):    rows.append(rowList(i)) # 等價於rows.append(i, rowLists(i))  return rows'''擷取某個Sheet的指定序號的行sheetIndex從0開始rowIndex從0開始'''def getRow(sheetIndex, rowIndex, xlsFilePath):  rows = getAllRowsBySheetIndex(sheetIndex, xlsFilePath)  return rows[rowIndex]''' 擷取列視圖根據Sheet序號擷取該Sheet包含的所有列,傳回值類似[ ['a', 'b', 'c'], ['1', '2', '3'] ]sheetIndex指示sheet的索引,0表示第一個sheet,依次類推xlsFilePath是Excel檔案的相對或者絕對路徑'''def getAllColsBySheetIndex(sheetIndex, xlsFilePath):  workBook = xlrd3.open_workbook(xlsFilePath)  table = workBook.sheets()[sheetIndex]  cols = []  colNum = table.ncols # 總共列數  colList = table.col_values  for i in range(colNum):    cols.append(colList(i))  return cols'''擷取某個Sheet的指定序號的列sheetIndex從0開始colIndex從0開始'''def getCol(sheetIndex, colIndex, xlsFilePath):  cols = getAllColsBySheetIndex(sheetIndex, xlsFilePath)  return cols[colIndex]'''擷取指定sheet的指定行列的儲存格中的值'''def getCellValue(sheetIndex, rowIndex, colIndex, xlsFilePath):  workBook = xlrd3.open_workbook(xlsFilePath)  table = workBook.sheets()[sheetIndex]  return table.cell(rowIndex, colIndex).value # 或者table.row(0)[0].value或者table.col(0)[0].valueif __name__=='__main__':  rowsInFirstSheet = getAllRowsBySheetIndex(0, './產品.xls')  print(rowsInFirstSheet)  colsInFirstSheet = getAllColsBySheetIndex(0, './產品.xls')  print(colsInFirstSheet)  print(getRow(0, 0, './產品.xls'))  # 擷取第一個sheet第一行的資料  print(getCol(0, 0, './產品.xls'))  # 擷取第一個sheet第一列的資料  print(getCellValue(0, 3, 2, './產品.xls'))  # 擷取第一個sheet第四行第二列的儲存格的值

希望本文所述對大家的Python程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.