【第22期】观点:IT 行业加班,到底有没有价值?

使用Python处理excel表格(openpyxl)及表格中的中文处理

原创 2015年11月20日 16:08:18

        现在有个小任务,需要处理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:
    	<span style="white-space:pre">	</span>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的编码,需要先encodegbkdecodeunicode,再encodeutf8,就可以显示了。


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

python用openpyxl操作excel

Win32 COM操作office但讲不清楚,可能不支持夸平台,linux是否能用?xlrd(读excel)表: xlrd读大表效率高于openpyxl xlwt(写excel)表: xlrd和...

python 使用openpyxl 读写xlsx

本文全文转载自:http://hi.baidu.com/chapsticks/item/773f7ae573b34f3f4ddcaf5a   python有很多模块都是用来操作excel的,比如x...
  • fzd041
  • fzd041
  • 2013-04-01 14:29
  • 2142

使用Python与openpyxl进行表格处理(一)——读取数据

虽然现在的工作跟编程已经没有关系,但是曾经学过的东西也可以为我所用,运用到自己的目前工作岗位中,提高工作效率。这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据。Pyth...

Python openpyxl下载和安装

openpyxl:操作excel2010 xlsx/xlsm的模块 下载地址:https://pypi.python.org/pypi/openpyxl 下载解压后,进入到目录内,运行cmd,执行语句...

Python借助Openpyxl读写excel2007

虽说自己是学计算机的,有时候觉得还不如人家没有学计算机的会编程,最近心情比较down,感觉什么也不如人家,心里有点失调,but 还得硬着头皮自己走下去并且要对自己有个交代。不罗嗦了说说这几天的菜鸟级别...

python使用easy_install安装支持excel2007操作的openpyxl

首先不了解easy_install的可以参考百度百科http://baike.baidu.com/view/4087352.htm 然后到http://pypi.python.org/pypi/se...

python中使用openpyxl 读写excel2007使用笔记

有一万年没来这儿写blog了,今天等着发版,抽空来写点东西吧。 python有很多模块都是用来操作excel的,比如xlrd,xlwt,pyExcelerator。用着很方便,但是问题是,只能支持到...

python写excel文件,openpyxl, xlrd, xlwt,xlutils

在上一篇写了python利用csv模块写csv文件,http://blog.csdn.net/xiaobing_blog/article/details/14056473,速度很快 但有些缺陷,所以...

Python Module_openpyxl_处理Excel表格

目录目录 前言 软件系统 Install openpyxl module Sample code load_workbook加载Excel文件 wbObjectget_sheet_names 获取Ex...
  • Jmilk
  • Jmilk
  • 2015-12-24 13:30
  • 4227

Python Module_openpyxl_styles 样式处理

目录目录 前言 系统软件 Working with styles Styles can be applied to the following aspects Styles模块 Copying sty...
  • Jmilk
  • Jmilk
  • 2016-01-01 13:27
  • 4912
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)