使用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处理excel表格(openpyxl)教程

现在有个小任务,需要处理excel中的数据。其实就是简单的筛选,excel玩的不熟练,而且需要处理的表有70多个,于是想着写个脚本处理一下吧。 python中的openpyxl包可以轻松实现读写e...
  • cyjs1988
  • cyjs1988
  • 2017年07月12日 22:38
  • 3130

openpyxl参考手册

  • 2015年11月27日 21:59
  • 1.44MB
  • 下载

python使用openpyxl库修改excel表格数据

1、openpyxl库可以读写xlsx格式的文件,对于xls旧格式的文件只能用xlrd读,xlwt写来完成了。 简单封装 from openpyxl import load_workbook from...
  • hqzxsc2006
  • hqzxsc2006
  • 2016年06月29日 17:33
  • 10859

python xlsxwriter vs openpyxl

xlsxwriter 实现将数据按某种指定的格式写入excel, openpyxl 则以某种格式将excel读入并做处理。 这两个工具都有比较讲解清晰的文档,十分易用。 也再次证明,学好英文走遍天...
  • huxian370
  • huxian370
  • 2016年07月15日 15:15
  • 1984

如何在Excel表的同一个单元格中换行?

问:如何在Excel表的同一个单元格中换行?  答:Alt+Enter
  • u011768325
  • u011768325
  • 2015年09月28日 17:08
  • 537

换行符转换脚本(Python)

似乎,需要整理整理使用的python的脚本了: 很简单的一个东西,在'\n'、'\r\n'、'\r'3中换行符之间进行转换。 用法 usage: eol_convert.py [-h...
  • dbzhang800
  • dbzhang800
  • 2011年11月02日 00:12
  • 3592

关于处理Excel表中文字不能自动换行问题

      大家是不是经常会在处理Excel表文字的时候会遇到单元格已经设置好自动换行,但是没出现我们预期的结果, 其中有那么一些行就是不听话,总是换了不了行并且好多文字还隐藏起来显示不出来,这个时候...
  • Email20008
  • Email20008
  • 2007年08月15日 17:31
  • 8691

如何用代码在Excel中实现单元格内换行

尝试了很多办法,最后确定,这样简单可行。第一步,将此单元格设置为“自动换行”第二步,在代码中需要换行的位置输入 “\n”首发 http://anforen.com/wp/2017/02/how_to_...
  • metababy
  • metababy
  • 2017年02月27日 11:23
  • 2352

01-如何在Excel表的同一个单元格中换行?

使用alt+enter进行强制换行。 使用Excel编辑表格的时候,为了在一个单元格里面纵向插入内容,就按下了回车键,但是回车之后就跳到了下一个单元格了。 所以我觉得这其中必有蹊跷,于是就试了一下...
  • u010653050
  • u010653050
  • 2015年10月15日 13:50
  • 938

数据标准化 使用Python脚本处理excel单元格换行符

在下在做数据分析时,原始数据是excel格式的,导入hive表时将其转化为txt格式。 excel文件转txt格式的步骤如下: 1.打开另存为 2.选择txt格式保存 3.打开转成的txt将编...
  • collaboom
  • collaboom
  • 2016年08月17日 09:37
  • 3093
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Python处理excel表格(openpyxl)及表格中的中文处理
举报原因:
原因补充:

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