最近刚开始学python,正好实习工作中遇到对excel中的数据进行处理的问题,就想到利用python来解决,也恰好练手。
实际的问题是要从excel表中提取日期、邮件地址和时间,然后统计在一定时间段内某个人在某个项目上用了多少时间,最后做成一张数据透视表(这是问题的大致意思)。
首先要做的就是数据提取了,excel中本身有一个text to column的功能,但是对列中规律性不好的数据处理效果很差,不能分割出想要的数据,所以我果断选择用python来完成。
要用的库一个是对excel读写处理的,一个事正则表达式的库。
因为xlwt和xlrd只能对03版以前的excel处理,所以我选择了openpyxl。
以下代码就是自己敲的,写了对日期和邮件地址的提取,最后出来效果不错,仅供大家参考,欢迎交流与改进。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import openpyxl import re def Exceldivide(file_dir): wb = openpyxl.load_workbook(file_dir) #打开原有的excel表 sheet = wb.get_sheet_by_name( 'Sheet1' ) tuple (sheet[ 'A1' : 'C3' ]) wb.create_sheet( 'Sheet2' ) #新建一个表 sheet2 = wb.get_sheet_by_name( 'Sheet2' ) tuple (sheet2[ 'A1' : 'C3' ]) L1 = re. compile (r '\d\d/\d\d/\d\d\d\d' ) #日期格式 L2 = re. compile (r '[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.com' ) #邮件格式 l1 = [] l2 = [] for rows in sheet[ 'A1' : 'C3' ]: #提取日期和邮件数据 for cell in rows: A = L1.search(cell.value) a = A.group() B = L2.search(cell.value) b = B.group() for rows in sheet2[ 'A1' : 'A9' ]: #把日期数据写入新表 for cell in rows: cell.value = a print (cell.coordinate,cell.value) for rows in sheet2[ 'B1' : 'B9' ]: #把邮件数据写入新表 for cell in rows: cell.value = b print (cell.coordinate,cell.value) return wb g = Exceldivide( 'C:\\Users\\Desktop\\111_copy.xlsx' ) g.save( 'C:\\Users\\Desktop\\111_copy.xlsx' ) #保存 |
以上这篇利用python对Excel中的特定数据提取并写入新表的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/heavenmark/article/details/73518853