[Python] openpyxl读存大数据 Exception: String longer than 32767 characters
来源:互联网 发布:买了域名怎么卖 编辑:程序博客网 时间:2024/06/05 21:07
xlwt缺点:
- 版本
只能处理Excel97-2003或Excel 97之前版本的xls格式 - 存储数据过大
存储数据过大时,会报错Exception: String longer than 32767 characters
OpenPyXL可以解决以上情况,OpenPyXL缺点:
- 读取xls格式时load_workbook函数utf-8报错
下载:链接http://pan.baidu.com/s/1dFF8jVN 密码qkpp
安装:命令行进入setup.py目录下,运行以下命令python setup.py install
- 操作文件与表
- 操作数据
- 保存
- 异常错误
- 常用方法
操作文件与表
import openpyxl# 操作excelwb = openpyxl.Workbook() #创建excelwb2 = openpyxl.load_workbook(path) #打开现有的excel# 创建表ws = wb.active #正在运行的工作表ws1 = wb.create_sheet() #末尾插入表ws2 = wb.create_sheet(0) #插在第一个位置ws3 = wb["New Title"] #根据名称获得表ws4 = wb.get_sheet_by_name("New Title") #根据名称获取表print wb.get_sheet_names() #得到所有工作表# 为表命名ws.title = "New Title" #创建时系统自定命名#循坏所有的工作表for sheet in wb: print sheet.title
操作数据
一个工作表被创建时,其中不包含单元格,只有当单元格被获取时才被创建
openpyxl里第一行第一列索引为1,1(即从1开始,不是从0开始)
# 行列数len(ws.rows) #行数len(ws.columns) #列数 # 读c = ws['A4']c = ws.cell('A4')c = ws.cell(row = 4, column = 2)cell_range = ws['A1':'C2'] #使用切片获取多个单元格#获取多个单元格并遍历for row in ws.iter_rows('A1:C2'): for cell in row: print cell#迭代文件中所有的行for row in ws.rows: #取一行 for cell in row: #一行中一个一个取 print cell#得带文件中所有的列ws.colums # 写ws['A4'] = 4# 有openpyxl.cell.Cell,可以直接为该单元赋值c.value = 'Hello,world'c.value = '15%' #其他类型c.value = datetime.datetime.now()
保存
# 覆盖掉原文件wb.save(path) # True时文件保存为模板wb = load_workbook('doc.xlsx')wb.save('doc_template.xltx',as_template=True)# False时文件或模板保存为文件wb = load_workbook('doc.xltx')wb = load_workbook('doc_template.xltx') #或者wb.save('doc.xlsx',as_template.False)
异常错误
以上是网上用法集合,以下是博主遇到的一些问题,及解决方法
获取行数
len(sheet1.rows)
,报错TypeError: object of type 'generator' has no len()
#获取行数rows = tuple(sheet1.rows)len(rows)
文件路径有中文,报错
IOError: [Errno 2] No such file or directory: '\xe9\x81\x93\xe8\xb7\xaf_POI.xlsx'
,读取错误#解决方案,中文部分在外面用u编码,使用%s传进路径,成功TYPE = u'道路' #中文部分使用u编码EXCEL_PATH = r'G:\workspace\python\arcpy\citywalker\%s_POI.xlsx'% TYPE #使用%s代替中文形成路径
常用方法
以下是博主用到的方法:
获取第一个sheet
excel = openpyxl.load_workbook(path)sheetnames = excel.get_sheet_names()name = sheetnames[0]sheet1 = excel[name]
获得行数
rows = tuple(sheet1.rows)len(rows)
获取第一列或列
# 获取第一列for row in sheet1.rows: print row[0].value# 获取第一行for col in sheet1.columns: print col[0].value# 获取第一行,法二ncols = len( tuple(table.columns) )for i in range(0, ncols): print table.cell(row = 1,column = i+1).value
阅读全文
0 0
- [Python] openpyxl读存大数据 Exception: String longer than 32767 characters
- 云之家API获取数据,Unirest.post 关闭Closing connections idle longer than 30 SECONDS
- python使用openpyxl库修改excel表格数据
- python 利用openpyxl包处理excel数据并作图
- python openpyxl读写excel
- Python install openpyxl
- python xlsxwriter vs openpyxl
- python openpyxl学习
- python openpyxl 操作 excel
- Delete log files longer than 45 days
- Find another way longer than A-C
- String literals in formulas can't be bigger than 255 characters ASCII
- String literals in formulas can't be bigger than 255 characters ASCII
- Python借助Openpyxl读写excel2007
- Python借助Openpyxl读写excel2007
- python 使用openpyxl 读写xlsx
- Python借助Openpyxl读写excel2007 +
- python用openpyxl操作excel
- Fast_RCNN论文笔记
- 2017.11.04离线赛总结
- Linux技巧
- 《Android开发艺术探索》笔记(View的知识体系)
- 点击按钮,ajax提交报错
- [Python] openpyxl读存大数据 Exception: String longer than 32767 characters
- Java入门和进阶必读书单
- linux中的存储设备的管理
- 极限学习机应用于入侵检测(一)
- docker compose 应用案例 web负载均衡
- 极限学习机应用于入侵检测(二)
- 河内之塔算法实现(c与python)
- PyTorch笔记4-快速构建神经网络(NN)
- 下面的电路里面的推拉式输出是怎么工作的