大部分情况下,电子表格都是用来存储格式化的数据。 作为数据存储的容器,注意对 XLSX 进行一些约束,如数据类型、数据的完整性。 这些约束如果应用到数据库上可能更加明显,但是电子表格的使用场景可能更加常见。
场景说明
读取txt文本文件内的人员信息清单,获取个人信息,并分类别统计各类项目,最后将人员信息清单存储到xlsx表中。
解决思路
先熟悉txt文件中的信息清单格式,逐行读取文本内容,根据姓名、年龄、部门、性别分别存储到字典变量中, 并且当读取到每个人的最后一项信息条时将字典存储到列表里, 全部添加完之后读取列表变量的值,按照分类来逐行添加到xlsx表中。
解决方法
使用 with
语句打开txt文件,逐行读取文本信息,判断信息开头信息属于姓名、年龄、部门、性别哪个分类,
并将截取到的字符串添加到字典变量 list1
中。
当读取到最后每个人一行信息的时候,也就是‘性别’,将 list1
添加到列表 dist
中,并且清空字典 list1
。
list1={}
dist=[]
with open('xx_name.txt', 'r') as f:
for line in f:
if '姓名'in line:
list1['姓名']=line[3:-1]
if '年龄'in line:
list1['年龄']=line[3:-1]
if '部门'in line:
list1['部门']=line[3:-1]
if '性别'in line:
list1['性别']=line[3:-1]
dist.append(list1)
list1={}
dist
[{'姓名': 'Herry', '年龄': '23', '部门': '销售', '性别': '女'}, {'姓名': 'Merry', '年龄': '43', '部门': '销售', '性别': '男'}, {'姓名': 'Nancy', '年龄': '29', '部门': '产品计划', '性别': '女'}, {'姓名': 'Fin', '年龄': '42', '部门': '市场开发', '性别': '女'}, {'姓名': 'Max', '年龄': '29', '部门': '人事', '性别': '女'}, {'姓名': 'Tom', '年龄': '50', '部门': '行政', '性别': '男'}, {'姓名': 'Jerry', '年龄': '33', '部门': '人事', '性别': '女'}]
创建excel文件。
from openpyxl import Workbook
创建一个Workbook
对象,这相当于创建了一个Excel文件。
wb = Workbook()
获取活动的worksheet(工作表)。
ws = wb.active
改变工作表的标题。
ws.title = "MySheet"
在单元格A1
中写入数据。
ws['A1'] = "Hello"
ws['B1'] = "World"
保存文件。
wb.save("xx_统计.xlsx")
OpenpyXL 模块的 Workbook
方法打开统计.xlsx
文件,
新建工作表 Data4
,按照类姓名、年龄、部门、性别,分别获取列表dist
中的人员信息,
并且逐行添加列表 list
,新的一行清空 list
内容,
统计.xlsx
文件保存工作表 Data4
的内容。
import openpyxl
from openpyxl import Workbook
wb = Workbook()
wb = openpyxl.load_workbook('xx_统计.xlsx')
sheet = wb.create_sheet('Data4', index=0)
head=['姓名', '年龄', '部门','性别']
for x in head:
list=[]
list.append(x)
for i in range(len(dist)):
list.append(dist[i][x])
sheet.append(list)
wb.save('xx_统计.xlsx')
count_男 = 0
count_女 = 0
for rec in dist:
print(rec)
if rec['性别'] == '男':
count_男 = count_男 + 1
if rec['性别'] == '女':
count_女 = count_女 + 1
print(count_男)
print(count_女)
{'姓名': 'Herry', '年龄': '23', '部门': '销售', '性别': '女'} {'姓名': 'Merry', '年龄': '43', '部门': '销售', '性别': '男'} {'姓名': 'Nancy', '年龄': '29', '部门': '产品计划', '性别': '女'} {'姓名': 'Fin', '年龄': '42', '部门': '市场开发', '性别': '女'} {'姓名': 'Max', '年龄': '29', '部门': '人事', '性别': '女'} {'姓名': 'Tom', '年龄': '50', '部门': '行政', '性别': '男'} {'姓名': 'Jerry', '年龄': '33', '部门': '人事', '性别': '女'} 2 5
wb = Workbook()
wb = openpyxl.load_workbook('xx_统计.xlsx')
sheet = wb.active
sheet.cell(row = 10, column= 1).value = count_男
wb.save('xx_统计.xlsx')