Python处理Excel表格

对于操作Excel,需要Xlrd/xlwt这两个模块,下面推荐出系统性学习的网址:

python操作Excel读写--使用xlrd

官方文档

Python 使用 Xlrd/xlwt 操作 Excel

用Python读写Excel文件

1 Windows下先下载 xlwt 和xlrd

2. 解压xlrd-0.9.2.tar.gz至指定文件夹

3. 在CMD控制台下切换至上述指定文件夹路径,输入命令 python setup.py install 完成安装

Linux下安装同安装python 或者用pip安装pip install xlwt

二、实战

帮朋友处理一个excel,幸好数据量不大,几万条数据。需求如下:

指定选取三列然后挑选出同时满足>=1或者同时<=-1的 将其所有数据存入新的csv表格中

程序如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Date    : 2014-04-10 21:47:56

# @Function: 指定选取三列然后挑选出同时满足>=1或者同时<=-1的 将其所有数据存入新的csv表格中

# @Author  : BeginMan

import os

import string

import xlrd

import xlwt

def get_data():

"""获取excel数据源"""

file = r‘C:\Users\Administrator\Desktop\pytool\xlrd\initial_log_data.xls‘                   # 改成自己的路径

filepath = raw_input(u‘请将xls文件路径粘贴进去,如果程序里已经指定了文件则按Enter键继续:‘)

is_valid = False                      # 验证文件

try:

filepath = [file, filepath][filepath != ‘‘]

print filepath

# 判断给出的路径是不是xls格式

if os.path.isfile(filepath):

filename = os.path.basename(filepath)

if filename.split(‘.‘)[1] == ‘xls‘:

is_valid = True

data = None

if is_valid:

data = xlrd.open_workbook(filepath)

except Exception, e:

print u‘你操作错误:%s‘ %e

return None

return data

def handle_data():

"""处理数据"""

data = get_data()

if data:

col_format = [‘B‘, ‘C‘, ‘D‘]          # 指定的列

inp = raw_input(u‘请选择指定的三列,用逗号分隔,默认的是B,C,D(英文逗号,不区分大小写),如果选择默认则按Enter键继续:\n‘)

try:

inp = inp.split(‘,‘)

col_format = [col_format,inp][len([i for i in inp if i in string.letters]) == 3]

col_format = [i.upper() for i in col_format]                                 # 转换成大写

table = data.sheet_by_index(0)                                                        # 选取第一个工作区

nrows = table.nrows                                                                                   # 行数

ncols = table.ncols                                                                                   # 列数

str_upcase = [i for i in string.uppercase]                                     # 所有大写字母

i_upcase = range(len(str_upcase))                                                     # 对应的数字

ncols_dir = dict(zip(str_upcase,i_upcase))                                     # 格式成字典

col_index = [ncols_dir.get(i) for i in col_format]                           # 获取指定列所对应的索引

# 选取的三列是否同时满足 >=1或者同时<=-1

print u‘正在检索中……‘

count = 0

result = []

for i in xrange(nrows):

cell_0 = table.cell(i,col_index[0]).value

cell_1 = table.cell(i,col_index[1]).value

cell_2 = table.cell(i,col_index[2]).value

if (cell_0>=1 and cell_1>=1 and cell_2>=1) or (cell_0<=-1 and cell_1<=-1 and cell_2<=-1):

result.append(table.row_values(i))            # 将符合要求的一行添加进去

count += 1

print u‘该文件中共%s行,%s列,其中满足条件的共有%s条数据‘ %(nrows, ncols, count)

print u‘正在写入数据……‘

col_name = col_format[0]+col_format[1]+col_format[2]

if write_data(result, col_name):

print u‘写入成功!‘

except Exception, e:

print u‘你操作错误:%s‘ %e

return None

else:

print u‘操作失败‘

return None

def write_data(data, name):

"""写入数据,data为符合条件的数据列表,name表示指定的哪三个列,以此命名"""

file = xlwt.Workbook()

table = file.add_sheet(name,cell_overwrite_ok=True)

l = 0   # 表示行

for line in data:

c = 0   # 表示一行下的列数

for col in line:

table.write(l,c,line[c])

c += 1

l += 1

defatul_f = r‘C:\Users\Administrator\Desktop\pytool\xlrd‘            # 默认路径

f = raw_input(u‘请选择保存文件的路径:按回车跳过:‘)

f_name = r‘\%s.xls‘ % name

filepath = [defatul_f+f_name, f+f_name][f != ‘‘]

file.save(filepath)

return True

def main():

handle_data()

if __name__ == ‘__main__‘:

main()

运行结果如下:

源数据

处理后的数据

时间: 2024-12-21 21:37:17

Python处理Excel表格的相关文章

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

python 操作excel表格

Python 操作excel 表格 #coding=utf-8 import xlsxwriter #1.创建excel 对象 work = xlsxwriter.Workbook('hello.xlsk')#在当前目录下创建一个Excel文件 #2. 创建表格 worksheet = work.add_worksheet('int') #3.写入内容 title_index = ["A","B","C","D","

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

Python:读取Excel表格时出现的u&#39;\u51c6’ 无法正确显示汉字

读取Excel后,想显示其中一行的元素,结果读出来是这样[u'\u51c6\u8003\u8bc1\u53f7', u'\u8003\u751f\u59d3\u540d'],始终不显示正常的汉字 依照网上的方法直接print()即可输出,试验后发现确实可以,不过一次只能输出一个元素,多余一个元素则依旧 后查找得知解决方法:需要用到json库 1 import json 2 #……文件的读取略去 3 #json.dumps(A).decode("unicode-escape") 4 #这

python操作Excel表格读写--xlrd 模块

转载原文地址:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 安装:解压压缩包,Windows命令行模式,进入解压文件目录,执行:python setup.py install 二.使用介绍 1.导入模块 import xlrd 2.打开Excel文件读取数据 dat

Python读取excel表格时,意外的深入理解info字典问题

import xlrd import re def excel_table_byindex(): data = xlrd.open_workbook('crawlingPhonePrice_new.xlsx') #打开一个excel表格,表格有手机名,价格 table=data.sheets()[0] nrows=table.nrows ncols=table.ncols colnames=table.row_values(0) #print(colnames) info={} #存放键值对,手

python操作excel表格文件--使用xlrd模块

原文: http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 引言: 实际工作中,可能很多情况下都会用到excel表格,像如果不需要很正规的用例工具来管理用例的话,大多公司选择直接用excel来管理用例:包括api自动化测试在设计接口的测试用例时,一般会先将接口的url.方法.参数.报文.接口描述等用excel维护起来,然后再从excel表格中读取这些接口信息: 实际的使用步骤如下: 1.安装xlrd模块: 很简单吧,pip

Python读写excel表格的方法

目的:实现用python做excel的读取.新增.修改操作. 环境:ubuntu 16.04  Python 3.5.2 用python读写文档,一般是操作txt文件或者可以用记事本打开的文件,因为这个操作很直接,不需要导入其他模块,但如果想要对excel表格进行操作,就需要导入其他模块,包括:xlrd(读取),xlwt(写入),xlutils(复制),一般是这三个模块,且需要另外下载,http://pypi.python.org/pypi/模块名. 表格的读取: 读取只需要导入xlrd模块:

python中excel表格的读写

1 #!usr/bin/env python 2 #-*- coding:utf-8 -*- 3 import xlrd 4 import xlwt 5 from xlutils.copy import copy 6 import os 7 8 data = xlrd.open_workbook('M3000.xls') #打开一个excel表格 9 table = data.sheets()[0] #通过该方法读取的sheet是只读的,不能进行写操作 10 rows = table.nrows