python向xls文件写入数据(Python这样操作能存储100多万行的xlsx文件)
(1) 如果excel文件是xls,2003版的,使用xlrd和xlwt库来对xls文件进行操作
(2) 如果excel文件是xlsx,2007以上版的,使用openpyxl库来对xlsx文件进行操作
Tips:xlrd、xlwt和openpyxl非python自带库,需要进行安装,可以查看我之前的文章。
如果你在学习Python的过程当中有遇见任何问题,可以加入我的python交流学习qq群:683380553,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我,如果你准备学习大数据,也欢迎加入大数据学习交流qq群683380553,每天与大家分享学习资源哦。
我们使用Python做数据挖掘和分析时候,当数据行超过一定数量,xls文件是存不下的。显然无法满足我们的大量数据存储需求,这个时候需要改用xlsx。
那具体xls和xlsx最大分别可以存多少行呢?
(1) 对于2003版本的xls文件,最大行数是65536行
(2) 对于2007版本的xlsx文件,最大行数是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 = [] # 行数据 col = 1 for cell in row: lineData.append(cell.value) # 1列1列读 col = col 1 list.append(lineData) return list # 操作数据 def operateData(filename): list = readExcel(filename) # 去除第一行,第一行是表头 list.pop(0) pprint.pprint(list) pprint.pprint("先按性别排序,再按身高排序") # 要对身高进行排序,但是男女有别 # 先按性别排序,再按身高排序 list.sort(key=lambda ele: (ele[3], ele[4])) pprint.pprint(list) # 获取Excel标签列表 # 比如第5行标签列表,总共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): # 下标从1开始 datalist = list[i -1] # 读取1行 col = 1 # 1列1列写入 for data in datalist: sheet.cell(i, col, data) #写入内容 col = 1 # 获取标签列表 tagList = getTagList(i, len(datalist)) Font = Font('微软雅黑', size = 14, color = '333333') # 设置单元格字体、字号、颜色 for tag in tagList: sheet[tag].font = font # 设置字体 # 保存文件 book.save(outputFilePath) except Exception as e: # 捕获异常 print(e) # 主函数 if __name__ == "__main__": print("读取xlsx格式的数据") userList = readExcel('user.xlsx') print("写入xlsx文件") writeExcel("user2.xlsx", userList) print("操作数据") operateData('user.xlsx')
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com