请教大家一下,我有一个excel矢量点数据,数据里面包括一个区域的经纬度数据,还有不同年份数据。
以下是该实例的全部代码:
import xlrd
import xlwt
import os
# 获取目录下文件
# 先遍历目录下文件
path = './tables' # 此处用的是相对路径(注意自己的文件路径)
f = os.walk(path)
files = [] # xls 文件列表
# 获取目录下文件
for dir_path, dir_names, file_names in f:
for file in file_names:
# 筛选目录下xls格式文件
if '.xls' in file:
files.append(file)
# 用 xlrd 读取Excel文件数据
# 定义读取单个 excel 文件数数据
def read_excel(name):
file_path = path + '/'+ name
work_book = xlrd.open_workbook(file_path)
sheet = work_book.sheet_by_index(0)
return sheet._cell_values[1:]
# 读取目录下所有数据
sign_data = [read_excel(name) for name in files]
# 按照汇总要求整理数据
summary_data = []
for data in sign_data:
for d in data[2:]:
# 在每条报名信息中插入学院、年级、专业信息
d.insert(0,data[0][6]) # 专业信息
d.insert(0,data[0][4]) # 年级信息
d.insert(0,data[0][1]) # 学院信息
summary_data.append(d)
# 报名字段列表
sign_keys = sign_data[0][1]
# 汇总表格字段操作
summary_key = sign_keys[:]
summary_key.insert(0,'专业信息')
summary_key.insert(0,'年级信息')
summary_key.insert(0,'学院信息')
# 获取校运会运动项目清单
sports = []
for data in summary_data:
if data[7] not in sports:
sports.append(data[7])
# 按运动项目筛选报名信息
sport_data = {}
for sport in sports:
sport_data[sport] = []
for data in summary_data:
if sport == data[7]:
sport_data[sport].append(data)
# 写入数据
work_book = xlwt.Workbook()
sheet_0 = work_book.add_sheet('汇总信息')
sheet_0.write_merge(0,0,0,10,'xx大学校运会报名信息表')
# 写入汇总表格报名信息字段
for col,string in enumerate(summary_key):
sheet_0.write(1,col,string)
# 写入汇总数据
for row,ds in enumerate(summary_data):
for col,d in enumerate(ds):
sheet_0.write(row+2,col,d)
# 写入各个运动项目的报名信息sheet表
for sport,s_ds in sport_data.items():
# 增加sheet表
s_sheet = work_book.add_sheet(sport)
# 在sheet表中增加数据
s_sheet.write_merge(0,0,0,10,'%s参赛项目报名人员信息汇总' % sport)
for col, string in enumerate(summary_key):
s_sheet.write(1, col, string)
# 写入具体报名人员信息
for row,ds in enumerate(s_ds):
for col, d in enumerate(ds):
s_sheet.write(row + 2, col, d)
# 保存表格
work_book.save('summary_sign.xls')
注:以上代码,很多信息其实未具体指定,如有哪些运动项目、班级信息、专业信息等。数据内容字段(如:学院信息, 年级信息, 专业信息…)这些都是直接从表格里获取的。也就是说 该代码的复用性是比较高的,换做其他报名信息的统计,稍微改动一下,应该就可以运行了 。