python 读写execl

最近工作上需求对上百人的加班数据进行统计。介于人多,很多信息填写格式不规范。需要对execl数据进行修复。于是想到了利用python练手写个小脚本。

操作execl首先想到的工具就是xlrd和xlwt,先对单独数据进行测验:

import xlrd
import xlwt
from xlutils.copy import copy

data = xlrd.open_workbook(r"C:\...\***.xlsx")

table = data.sheets()[0]

nrows = table.nrows

wb = copy(data)
sheet = wb.get_sheet(0)

# test
print(nrows)
print(table.cell(32, 2).value)
print(len(str(table.cell(32, 2).value)))
print(str(table.cell(32, 2).value)[-2:] + '、')
sheet.write(32, 2, str(table.cell(32, 2).value)[-2:] + '、')
wb.save(r"C:\...\***.xlsx")

运行时报错:

PermissionError: [Errno 13] Permission denied: 'C:\....\***.xlsx'

第一反应估计时读写文件的权限不够,又由于在windows环境下折腾了半天,用cacls修改权限发现生效了:处理的文件: C:\...\***.xlsx 但是程序依旧报错。

网上突然看到https://stackoverflow.com/questions/30781894/xlwt-error-message-ioerror-errno-13-permission-denied-python-spreadsheet-xl:On Windows you get that error if the file is open in Excel.果断关闭execl再试没有问题

170
10.26
5
26、

心中一喜应该成功了,但是。打开execl报错了:

211848_xFXZ_3720135.png

检查程序执行,发现写入是成功的

170
26、
3
6、、

==================================

究竟时什么原因导致execl文件损坏呢?

wb.save(r"C:\...\***.xls")

将写入文件改为xls格式发现没有问题。

import xlrd
import xlwt
from xlutils.copy import copy

data = xlrd.open_workbook(r"****.xls")

table = data.sheets()[0]

nrows = table.nrows

wb = copy(data)
sheet = wb.get_sheet(0)

for i in range(1, nrows):
    if len(str(table.cell(i, 3).value)) == 5:
        sheet.write(i, 3, str(table.cell(i, 3).value)[-2:] + '、')

    elif len(str(table.cell(i, 3).value)) == 10:
        sheet.write(i, 3, str(table.cell(i, 3).value)[-4:-2] + '、')

wb.save(r"*****.xls")

总结:

http://wenqiang-china.github.io/2016/05/13/python-opetating-excel/

xlwt不支持xlsx格式。需要引入新的模块openpyxl。

下次具体实践openpyxl模块再分享

 

 

转载于:https://my.oschina.net/u/3720135/blog/1563410

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值