Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件
(1) 如果excel文件是xls,2003版的,使用xlrd和xlwt庫(kù)來(lái)對(duì)xls文件進(jìn)行操作
(2) 如果excel文件是xlsx,2007以上版的,使用openpyxl庫(kù)來(lái)對(duì)xlsx文件進(jìn)行操作
Tips:xlrd、xlwt和openpyxl非python自帶庫(kù)。
我們使用Python做數(shù)據(jù)挖掘和分析時(shí)候,當(dāng)數(shù)據(jù)行超過(guò)一定數(shù)量,xls文件是存不下的。顯然無(wú)法滿足我們的大量數(shù)據(jù)存儲(chǔ)需求,這個(gè)時(shí)候需要改用xlsx。
那具體xls和xlsx最大分別可以存多少行呢?
(1) 對(duì)于2003版本的xls文件,最大行數(shù)是65536行
(2) 對(duì)于2007版本的xlsx文件,最大行數(shù)是1048576行
閑話不多聊,直接上代碼干貨
!/usr/bin/env python3 - - coding: utf-8 - -
讀寫2007 excel
import pprint import openpyxl import openpyxl.styles from openpyxl.styles import Font,colors
讀取Excel文件
def readExcel(filename): workbook = openpyxl.load_workbook(filename) worksheet = workbook['用戶'] list = [] for row in worksheet.rows: # 1行1行讀 lineData = [] # 行數(shù)據(jù) col = 1 for cell in row: lineData.append(cell.value) # 1列1列讀 col = col + 1 list.append(lineData) return list
操作數(shù)據(jù)
def operateData(filename): list = readExcel(filename)
去除第一行,第一行是表頭
list.pop(0) pprint.pprint(list) pprint.pprint("先按性別排序,再按身高排序")
要對(duì)身高進(jìn)行排序,但是男女有別
先按性別排序,再按身高排序
list.sort(key=lambda ele: (ele[3], ele[4])) pprint.pprint(list)
獲取Excel標(biāo)簽列表
比如第5行標(biāo)簽列表,總共4列 ['A5', 'B5', 'C5', 'D5']
def getTagList(index, colNum): tagList = [] for i in range(0, colNum):
A的ascii碼值65
tag = chr(65 + i) + str(index) tagList.append(tag) return tagList
寫入Excel文件
def writeExcel(outputFilePath, list): book = openpyxl.Workbook() sheet = book.create_sheet("用戶", 0) sheet.title = "用戶" # sheet名稱 rowNum = len(list) try:
1行1行讀取
for i in range(1, rowNum + 1): # 下標(biāo)從1開始 datalist = list[i -1] # 讀取1行 col = 1
1列1列寫入
for data in datalist: sheet.cell(i, col, data) #寫入內(nèi)容 col += 1
獲取標(biāo)簽列表
tagList = getTagList(i, len(datalist)) font = Font('微軟雅黑', size = 14, color = '333333')
設(shè)置單元格字體、字號(hào)、顏色
for tag in tagList: sheet[tag].font = font # 設(shè)置字體
保存文件
book.save(outputFilePath) except Exception as e: # 捕獲異常 print(e)
主函數(shù)
if name == " main ": print("讀取xlsx格式的數(shù)據(jù)") userList = readExcel('user.xlsx') print("寫入xlsx文件") writeExcel("user2.xlsx", userList) print("操作數(shù)據(jù)") operateData('user.xlsx')
總結(jié)
以上所述是小編給大家介紹的Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Python讀取xlsx文件的實(shí)現(xiàn)方法
- python使用xlrd模塊讀取xlsx文件中的ip方法
- python3讀取csv和xlsx文件的實(shí)例
- 使用python庫(kù)xlsxwriter庫(kù)來(lái)輸出各種xlsx文件的示例
- Python3讀寫Excel文件(使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣)
- python寫入數(shù)據(jù)到csv或xlsx文件的3種方法
- Python使用pandas和xlsxwriter讀寫xlsx文件的方法示例
- 對(duì)python中xlsx,csv以及json文件的相互轉(zhuǎn)化方法詳解
- Python學(xué)習(xí)_幾種存取xls/xlsx文件的方法總結(jié)
- python操作xlsx文件的包openpyxl實(shí)例
- python實(shí)現(xiàn)xlsx文件分析詳解
- Python操作Excel之xlsx文件
- 用python讀取xlsx文件
相關(guān)文章
python3中的eval和exec的區(qū)別與聯(lián)系
這篇文章主要介紹了python3中的eval和exec的區(qū)別與聯(lián)系,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作
下面小編就為大家?guī)?lái)一篇淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Python結(jié)合ImageMagick實(shí)現(xiàn)多張圖片合并為一個(gè)pdf文件的方法
這篇文章主要介紹了Python結(jié)合ImageMagick實(shí)現(xiàn)多張圖片合并為一個(gè)pdf文件的方法,結(jié)合實(shí)例形式分析了Python將圖片文件轉(zhuǎn)換為pdf文件的相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Python腳本實(shí)現(xiàn)12306火車票查詢系統(tǒng)
本文給大家分享我使用python3實(shí)現(xiàn)的12306火車票查詢系統(tǒng),小編分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2016-09-09keras Lambda自定義層實(shí)現(xiàn)數(shù)據(jù)的切片方式,Lambda傳參數(shù)
這篇文章主要介紹了keras Lambda自定義層實(shí)現(xiàn)數(shù)據(jù)的切片方式,Lambda傳參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12