python怎么实现excel办公自动化,python excel 自动化办公
本来想写关于web的,但是老师突然留了一个作业,就是把word里的几百个数据转换成表格的形式。
但是很尴尬…我不会用词…
但是,我们都是至少学过python的人。编写这样的脚本非常简单。
一、处理数据示例首先需要的数据如下:
需要将以下数据转换到第一行的表格中,如图所示。
第二,剧本的构思。首先,我们必须将所有数据复制到一个新的txt文件中。python虽然可以直接读取word文档,但是不如直接读取txt文件舒服。如图,这是我复制到txt文档的内容。
data.txt
应该有400多个数据。那么我们要思考,如何处理这些数据?
我举一行数据为例。
1.将两行数据标准化为一行。如果我们的数据非常整齐,每一行都是按照某一个字符划分的,那么使用python的pyopenxl模块后就可以添加到表中。
所以首先要把数据标准化。如图所示,我们的最终目标是将每一条数据都标准化成这样一种形式。
比较原始数据:
将原本分两行的数据标准化为一行。
想想,我该怎么办?
很简单。为什么不直接读取这个文件,用空字符()替换第一行末尾的换行符( \n )?
所以我们得到了第一张图片的效果:
2.移除多余的换行符并观察我们的数据:
我们会发现第一个数据和第二个数据有一个不舒服的换行符。我们必须想办法移除它。
当然,我们就以一行数据为例。
我们的最终目标如下:
就是消除数据一和数据二之间的回车。
原理也很简单,就是读取第一个数据的最后一行时,回车( \n )换成()空字符。
3.处理多条数据。我们学会了处理一行数据,但是我们有将近400条数据。我们做什么呢
我相信已经有人想到了,就是写一个循环,然后计算。先这样再这样不是可以吗?
(原谅我写的懒,哈哈哈哈。后面我直接写代码你就明白了。)
三。守则的实施。相信大部分人都分析清楚了数据,我就按照上面的每一步来实现代码。
1.读写文件的代码如下
f=open (data.txt , r) list=f.readlines()的原理就不用说了吧?首先,通过读取打开文件,然后使用readlines函数将文件内容写入一个列表。
一开始我其实想用C来做这个脚本,但是用C实现会太麻烦,光是读写文件就要写十几行,不如python快。
2.这是数据处理的核心。首先,加载代码,然后我会解释它。
New_list=[]#下面要用到这个空列表,我们的数据经过处理后会放到这个列表中。对于范围内的数字(0,len (list),3): list [number]=list [number]。Replace (\ n , )list[数字1]=list[数字1]=1487:str=list[数字]list[数字1]list[数字2] new _ list。追加(str)else:str=list[number]list[number 1]new _ list。追加(字符串)1。循环首先解释一下为什么循环要这样写。
对于范围内的数字(0,len(list),3):由于观察到的数据:
发现我们的一个数据占用了三行,我们要处理这三行数据。我们的len(list)表示我们刚刚读取的数据,所以我们要一次增加三行循环,这意味着我们已经读取完一个数据。
2.换行符列表[编号]=列表[编号]的处理。替换( \ n ,)列表[编号1]=列表[编号1]。Replace (\ n ,)此代码使用Replace函数。第一个参数是替换前的字符,第二个参数是替换后的字符。
number变量用于记录行数。
第一个代码,因为我们一次读取三行,所以每三行的第一行就是我们图表中的数据:
所以,我们只需用replace替换最后一个回车。
第二个代码是相同的。这只是一个直接的过程。
3.条件判断if len(list)!=1487:str=list[数字]list[数字1]list[数字2] new _ list。追加(str)else:str=list[number]list[number 1]new _ list。append (str)为什么会有1487这个数字?因为总共有1487行数据。
我们对链表的操作是一次跳过3行,所以如果不在末尾加一个判断,就会出错,因为数字增量超过了链表的最大长度。
Else这样写是因为我们最后的1486行只处理两行数据,所以我这样写。
当然,记得提前写一个空列表,否则append函数就不起作用了。
4.将数据写入新的excel电子表格,这需要使用我们的openpyxl模块。如果没有,就去网上搜一下怎么安装。我直接看代码,在评论里详细解释。
导入pyxl #导入模块工作簿=openpyxl。workbook()# create a new workbook=workbook . active sheet . title=数据表 sheet[A1]=序号 sheet[B1]=业务类型 sheet[C1]=通话开始时间 sheet[D1]=通话持续时间 sheet[E1]=通话类型 sheet[F1]=对方号码 sheet[G1]=本地呼叫地 sheet[H1]=对方住宅 sheet [i1=其他费用 sheet[L1 这段代码放在开头。开始的代码放在中间。
然后在最后,添加以下代码:
For in new _ list: I=i.split(,)# Divide data sheet.append ([I [0],I [1],I [2],I [3],I [4],I [5],I [6],I[7]I[10])#将分割后的数据添加到excel电子表格工作簿中. save (bill data.xlsx) #保存数据。我就不详细解释openpyxl模块了。有兴趣的同学可以百度一下。
5.完整代码导入openpyxlworkbook=openpyxl . workbook()sheet=workbook . active sheet . title=数据表 sheet[A1]=序号 sheet[B1]=业务类型 sheet[C1]=通话开始时间 sheet[D1]=通话持续时间 sheet[E1]=通话类型 sheet[F1]=对方号码 sheet[G1]=本地呼叫地 sheet[H1]=对方住宅 sheet [i1=替换( \n , )if len(list)!=1487:str=list[number]list[number 1]list[number 2]new _ list . append(str)else:str=list[number]list[number 1]new _ list . append(str)For in new _ xlsx:I=I . split(,)sheet.append ([I [0],I [1],I [2],I [3],I [4],I [5],I [6],I [7],I [
运行后,在同一个目录下会生成一个 bill data.xlsx 文件,xlsx如图所示
好了,这就是这次python脚本的内容。相信你已经学会了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。