python如何处理excle_使用Python处理excel表格(openpyxl)及表格中的中文处理

现在有个小任务,需要处理excel中的数据。其实就是简单的筛选,excel玩的不熟练,而且需要处理的表有70多个,于是想着写个脚本处理一下吧。

python中的openpyxl包可以轻松实现读写excel文件,下面简单介绍一下过程。

1.安装openpyxl

通过pip或者easy_install均可安装openpyxl。

openpyxl官网:https://openpyxl.readthedocs.org/en/latest/

安装命令:

pip install openpyxl

or

easy_install openpyxl

即可。

2.使用openpyxl读xlsx

加载workbook,注意,openpyxl只支持xlsx格式,老版的xls格式需要其他方法去加载。

wb = load_workbook(filename = r'tj.xlsx')

获取每个sheet的名称

sheetnames = wb.get_sheet_names()

获得第一个sheet

ws = wb.get_sheet_by_name(sheetnames[0])

获取一个单元格的数据

c = ws['A4']

or

c = ws.cell('A4')

or

d = ws.cell(row = 4, column = 2)

一次获取多个单元格的数据

cell_range = ws['A1':'C2']

or

tuple(ws.iter_rows('A1:C2'))

or

for row in ws.iter_rows('A1:C2'):

for cell in row:

print cell

or

data_dic = []

for rx in range(0,ws.get_highest_row()):

temp_list = []

money = ws.cell(row = rx,column = 1).value

kind = ws.cell(row = rx,column = 2).value

temp_list = [money , kind]

#print temp_list

data_dic.append(temp_list)

for l in data_dic:

print l[0],l[1]

3.写入xlsx

比如数据存在上边定义的data_dic中

out_filename = r'result.xlsx'

outwb = Workbook()

ew = ExcelWriter(workbook = outwb)

ws = outwb.worksheets[0]

ws.title = "res"

i=1

for data_l in data_dic:

for x in range(0,len(data_l)):

#col = get_column_letter(x)

ws.cell(column = x+1 , row = i , value = "%s" % data_l[x])

i+=1

ew.save(filename = out_filename)

再增加一个sheet写内容

ws2 = outwb.create_sheet(title = 's2')

for data_l in data_dic:

for x in range(0,len(data_l)):

ws2.cell(column = x+1 , row = i , value = "%s" % data_l[x])

i+=1

ew.save(filename = out_filename)

4.中文编码问题

表格中的值,openpyxl会自动转换为不同的类型,有些表格中会有中文出现,就需要进行相应的转码。

可以写一个函数专门处理转码,需要时调用

def gbk2utf(in_data , tag):

if 1 == tag:

return in_data.encode('gbk').decode('gbk')

elif 0 == tag:

return in_data.encode('gbk').decode('gbk').encode('utf8')

当原始的excel文件是gbk编码时,就需要tag=0的方式去处理,

因为读入后是gbk的编码,需要先encode为gbk再decode为unicode,再encode为utf8,就可以显示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值