Python操作Excel实践总结

1. python操作Excel文件需要安装的模块

openpyxlxlrdxlwtwin32comopenpyxl只支持xlsx的读和写;而对于xls文件,xlrd只支持读,xlwt只支持写。

各个模块对Excel不同格式支持的对比,可参考http://www.gocalf.com/blog/python-read-write-excel.html

2. 模块安装方法

1). 直接装最新的python工具,然后配置环境变量,把\python34 和 \python34\Scripts配置到环境变量下

2). 安装openpyxl模块,dos窗口下运行easy_install openpyx

3). 下载xlrdxlwtwin32com模块,前三个模块下载源代码(下载地址:http://pypi.python.org/pypi/xlrd,不同的模块最后路径名字不同),然后解压,到解压的目录下打开dos窗口运行 python setup.py install ;win32com是下载的可执行文件,可直接安装

3. 各模块对Excel的读写操作

openpyxl对xlsx文件的读写操作

下面的例子是将一个xlsx表格按一定的规则,批量生成多个xlsx文件的操作,这个是实例中的部分代码,不一定能运行,仅供参考读写操作。
#-*- coding:utf-8 -* 
import sys
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter 
#------------------------------读取表中的全部内容到字典-------------------------#
def readExcel(fileName):
	wb = load_workbook(fileName)
	print (wb.get_sheet_names())
	#取第一张表  
	sheetnames = wb.get_sheet_names()  
	ws = wb.get_sheet_by_name(sheetnames[0])  
	# 建立存储数据的字典   
	data_dic = {}
	for rx in range(0,ws.max_row-1):  
		temp_list = []
		w1 = ws.cell(row = rx+2,column = 1).value  
		w2 = ws.cell(row = rx+2,column = 2).value  
		w3 = ws.cell(row = rx+2,column = 3).value  
		w4 = ws.cell(row = rx+2,column = 4).value  
		temp_list = [w1,w2,w3,w4]  
		data_dic[rx] = temp_list  
	return data_dic

#-----------------------------批量导出生成的模板文件--------------------------# 
def exportExcel(outputFile,data_dic,line):
	for i in range(0,len(data_dic)+1):
		# print (i)
		if(i % line == 0):
			#新建一个workbook  
			wb = Workbook() 
			#新建一个excelWriter  
			ew = ExcelWriter(workbook = wb)  
			#第一个sheet是ws  
			ws = wb.worksheets[0]
			m = int(i/line + 1)
			ws['A1']=ws['B1']=ws['C1']=ws['D1']=ws['A2']=ws['B2']=ws['C2']=ws['D2']="cc" 
			dest_filename = outputFile + str(m) + '.xlsx'
			print (dest_filename)
		for j in range(0,4):
			if(i == len(data_dic)):
				break
			elif(i<line):
				ws.cell(row = (i+3),column = j+1).value = data_dic[i][j]
			elif(i>=line):
				p=i-int(i/line)*line
				ws.cell(row = (p+3),column = j+1).value = data_dic[i][j]
		if((i + 1) % line == 0) or (i == len(data_dic)):
			print ("end")
			ew.save(filename = dest_filename)


#-----------------------程序入口-----------------------------#
if __name__ == '__main__':
	data_dic = {}
	test_dic = {}
	test1_dic = {}
	data_dic = readExcel("test.xlsx")
	# print (data_dic)
	#test_dic,test1_dic = removeDuplicate(data_dic)
	# print (test_dic)
	# print (test1_dic)
	exportExcel("test_",test_dic,100)
	exportExcel("test1_",test1_dic,20)


xlrdxlwtwin32com模块对xls文件的操作

这个单独写下吧,下篇http://blog.csdn.net/revitalizing/article/details/47423427

你可能感兴趣的:(python,Excel,读写,xlrd,openpyxl)