python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到。心急的可以直接拉到最后看代码,我都加了比较详细的注释。

从8.3号早上9点,到8.8号下午5点半下班,终于把这个python代码写出来了,这五天简直是废寝忘食(扯淡),每天查资料到半夜2点(其实是天太热,洗完澡又晾干就要一个多小时了,在这里吐槽下今年的夏天,2016年北京的7月份简直了,平生第一次长痱子,连去年都没用过的凉席都翻出来了)。

好吧,扯得有点远了。因为工作需要,要批量修改一批rtf文件里的文字格式,rtf其实跟word是一样的。因为是处理文字,所以想用python解决,之前写过一个遍历文件夹的脚本,正好能用上。

但是这次要处理word文件,python本身貌似只能处理text文本,网上搜索之后,发现大家都用了一个pywin32模块,导入这个模块之后,就可以像vba一样操作word了!哈哈!

其实还是扯淡!我到写完这个脚本都没找到一个像样的API接口文档,可以说,我这五天只是在废寝忘食的查接口文档。

我曾天真的以为,我能找到一个PyWin32.chm文件,打开以后里面是pywin32模块里每个函数的详细用法,包括如何打开word,如何增删改查,如何修改字体,字号,如何设置段落格式等等,最重要的是,还是中文版!哇!奈斯!

然而查了几天后,我发现我真是脑子进屎了。安装完pywin32模块后,在“C:\Python34\Lib\site-packages”目录下,会送你一个PyWin32.chm,俗话说便宜没好货,何况是送的,全英文版我也忍了,毕竟26个英文字母还是读写熟练的,但是当我随便打开一个对象文档的时候,还是吓尿了!

     

右边的下拉条这么短是要闹哪样!我只是想简单打开个word啊!

好吧,新手没见过大场面,好在chm文档都很贴心的有个搜索框,兴奋的输入了“open”:

哇哦!真不少,挨个点开看看!

谁能告诉我这是些什么瘠薄玩意。。那一堆参数我要怎么输入。。说好的open(url)打开word文件呢?!

到此,我已经对这个文档放弃治疗了(当然也可能是我太水用不明白这个文档,但我目前也不想去弄明白他了。。)。

然后我又查查查查查查查查查查。。。。当然也有不少人(其实很少)在网上发了一些入门教学文档,包括怎么打开文件,关闭文件等等,但是也仅仅是入门,还不能完全满足我的需求,当然这些文章都被我未经允许,全部转载过来了。。能复制的就复制粘贴,不能复制的就截图复制粘贴!不过我应该都放上原文链接了。。。吧。。。

基本的功能在测试几次之后都能实现了,但是还有几个功能简直要吐血了,比如让一段文字格式化,成为没有任何格式的文本,这样一个函数折腾了整整一天!后来在vba操作里发现了一个ClearFormatting函数,才得到了解决。在这里必须要夸一夸微软爹:

这是一份VbaWord.chm文档,里面详细介绍了vba中的每个函数的用法,并且都有示例!最最重要的是,他居然是中文版!要不怎么说微软爹厚道呢^o^

既然说到微软了,顺便提一下python的IDE,我第一门正式学习的语言是Perl(工作需要),我对这门语言的评价是“呵呵”,我现在连一句Perl代码都记不起来,只记得一个美元符$和一个@。当然不是说Perl这门语言不好,只是对于初学编程的新手来说,代码实在是晦涩难懂,一堆符号往上一堆,感觉像是在梦游,而且Perl的学习资料很少,Perl在国外很火,但是在国内,呵呵。我当时写Perl代码的时候,用的是记事本。。因为那时候别说IDE了,文本编辑器也就知道记事本,写字板和word这三个。后来无意中知道了还有sublime这种东西,下载下来安装一试,哇,果然比记事本好用,而且也像网上说的皮肤很酷炫,黑色的,银色的,其他色什么的,听说还能装什么插件,简直就是神器!我当时感觉这就是我一辈子的伴侣了。然而几个月后我就换成了notepad++,原因是界面简单,启动速度快,汉化好,而且字好像也比较大。。

后来我从那个公司离职后,放弃了Perl,开始学习同是3P之一的python,当时从网上搜索教学视频,还买了小甲鱼的“VIP至尊会员”!在这里打个广告,想学python的可以去看看小甲鱼的视频,视频是免费的,优酷上就有,只是他的鱼c论坛里有些资料需要鱼币,如果是会员的话是免费的,当然你每天签到和回复都可以赚鱼币的,如果条件允许的话,可以买个会员,200块终身的。小甲鱼还是很辛苦的,看照片也就20多岁,现在还在每天更新视频,他不光讲python,还有c语言和其他的一些,不过我觉得还是python比较值得一看,毕竟国内的python教学视频很少,质量更是呵呵。

学习python的时候,我用的IDE一直是python自带的IDLE,其实我到现在用的也是IDLE。。IDLE其实真的很不错,有代码提示,也有颜色区别,F5运行,还有错误提示。前几天在查资料的时候,也看到很多人争论哪个python IDE最好用,评价最高的是pycharm,网上有人说,使用pycharm写python就好比使用vs写c#,听完这句我马上下载了这个200M的软件,然后花了俩小时去破解、汉化,然后试用了一分钟,最后花了5分钟卸载。一个汉化有bug,设置字体还要找教程,启动比vs还慢,占内存比vs还大,IDLE不能自动提示的他也没有的软件,我要来何用,你是如何有勇气跟vs比的?当然也可能是我水平不够没写过什么大项目,但是在我心中,vs依然是最好的IDE。既然vs这么好,那么有没有vs的python插件呢?毕竟eclipse都有个pydev啊!答案是有,就是PTVS,装上这个插件后,vs就能新建python项目了,而且vs的很多快捷键都可以用,比如注释,自动排版等,自动提示做的也还可以,毕竟是脚本语言,不能要求太高,引入模块里的函数一样不能点出来。当时第一次安装这个插件的时候其实感觉还是很别扭的,因为并不像写c#那样无可挑剔,当时心灰意冷,最终还是用回了IDLE。但是今天在把网上的一段代码复制到IDLE里后,缩进一直报错简直要炸了,一怒之下扔进vs里,看着熟悉的红色波浪线,心里涌过一丝温暖,就是你了。。

当然新手还是建议用IDLE,因为你要用PTVS这个插件要先装一个vs,而一个vs大约是4、5个G左右。。啥?你说装vs就为跑个python?

微软的东西就是好啊,虽然vs是收费软件,但是在国内,你跟谁收费呢?况且现在的vs2015有了免费的社区版,当然你也可以用其他方式获得专业版(我说的当然是花钱购买正版啊,你们不要误会)。

另外,c#是个好东西,想想我这一年,前前后后学习了不少东西,究其原因,是我一直想做个自己的网站,当时我已经买了域名和空间,但是还啥也不会。做网站就要学习HTML,但是光有HTML页面不好看,又学了CSS,但是网页不能动,不能点击什么的,又学了JavaScript,期间为了美化差点又学习Photoshop,后来发现是个大坑,赶紧跳了出来,东西太多,还是以后再学吧!然后网页要注册什么的吧,又要学习ASP.NET,但是上来没有基础又不能直接学,又从c#基础开始学起,期间还学习了C语言和SqlServer数据库,到三层的时候感觉有点跟不上了,于是我一鼓作气,跳了过去直接学ASP了(好无耻)。。因为正好当时老板一直催着我做一个注册网页,最后终于是做出来一个乞丐版的注册界面,能够跟我的数据库相连了,做出来的时候还是很高兴的!虽然其实代码量并不多,但好歹也是我自己做的。

说到这里,已经跑题跑的不要不要的了,顺便说一下,想要学习编程的同学,往往会在网上搜索“什么编程语言适合入门”,虽然我这篇文章的题目与这完全不相关。。但我把那句话写上了,万一搜到了呢,也能帮帮人是吧(希望不要毁人)。我当时也天天搜,网上众说纷纭,苦恼啊。但是作为一个过来人(其实还在开始的路上),首先要说的是,如果你有稳定的工作,或者不是计算机相关专业的,建议不要学。。或者说不要想着把编程当做一份事业,而抛弃原有的事业和专业。可能刚开始学习的时候,编出一个小程序,能够计算一个一元二次方程,觉得哇好有趣,编程原来这么简单啊!但是随着学习的深入,你会发现后面的知识会非常难理解,并且很枯燥,有的知识你学了也做不出什么有用的程序来,但却是非常重要的,这个时候你就觉得很没劲,然后在网上闲逛的时候,很可能会看到别人说,啊,你还在用xxx语言啊,早就不行了,现在是xxx的天下了!你一动摇,可能就会对转投另外一种语言,然后开头的学习也是很顺利,也很有趣,但是学到后面,会发现这门语言也很难,学一堆东西也是做不出什么像样的程序。这样就陷入了循环,不断学习新的语言,但是每种都只会个定义变量,写个for循环,甚至连函数都不清楚是什么,更不用说面向对象了,这样下去,原有的一点兴趣也被磨光了,你才会领悟到,原来编程这么难啊!

所以说,如果你现在过得不错,收入稳定,对编程有点兴趣,那就继续当做兴趣就可以了,千万不要以身试险,因为不是每个人都有极大的毅力和自制力的。别说你有。。说出来你自己都不信。。不然你把lol戒了试试。。或者减20斤膘。。

再有一种,对自己专业不满意,工作不满意,想要通过学习一门技术来改变命运的这类人。确实软件行业一直是高薪行业,一提程序员,都是高薪代名词。但是啊,高薪不是这么好拿的,还是上面说的,编程不是这么好学的,不然大家都能当程序员了。而且学编程,怎么也得高中毕业吧,如果连里面的单词都看不懂,我觉得还是挺难得,虽然说关键词就那几个,但是没有一定的数学逻辑思维的话,你懂得。。当然世事无绝对,初中生编程高手也是有的,至于小学啊,我就不敢说了。。

总而言之,如果你想从事软件这门行业,一定要慎重,如果决定了的话,就准备好吃几年苦吧!没错,是几年,不是几个月。

拿我自己来说,我原来的专业是生物技术,毕业后的第一个项目是采用基因克隆来检测细菌,听上去高大上吧,我用了4种技术来做,PCR,NASBA,LAMP,微阵列芯片,听上去更是吊炸天吧!然后一年半后我离职了,我跟boss说,我想做点靠谱的事情,我觉得编程挺靠谱的。boss表示很惋惜,但还是挽留我让我拿了年终奖再走,当时我一心想走,豪气万丈都有点看不上年终奖了,后来我很感激boss,因为那年的年终奖涨了2K。。

之后我去了一个小公司,就是我现在的公司,十几个人,做教育软件的。因为我那会啥编程语言也不会,只会点半吊子Perl(这是之前的boss让我学的,用来做生物信息分析),所以我应聘的只是数据录入,这种只要识字,会点电脑就能干的活,一个月3K,此外啥也没有,保险也没有,跟不用说饭补、交通住宿补贴了。而我居然能干下去,估计也是当时手里有点存款了。。

公司里有两个技术人员,是两口子,然后男技术又是老板的亲戚,有点乱。。这不重要!由于我表现出色(无耻。。),并且表示想要学习一些编程技术,男技术经常给我讲一些编程方面的知识,从此,给我打开了C#的大门!

男技术叫CZ,人真的很好,他说他也是大学毕业跨专业考的计算机研究生,本科专业是包装专业(什么鬼!- -!),然后考上研之后也是经常被忽略,后来依靠自己的努力,慢慢的在软件行业有了一席之地。啊,太励志了!

然而放到我身上完全不是这剧本了。。因为在上个公司天天操劳做实验,做汇报,被掏空了身子,身材一直很瘦削,183的个头,只有130斤(其实也不算很瘦。。)。然后来这公司以后,天天好吃懒做,每天那点破活随便就做完了,下班就走爱谁谁,从来不加班。就这样,半年胖了20斤,到150了,十月一回家的时候把我妈高兴坏了。

这半年里,算是初步开始正式接触编程了,开始在网上学习python,写一些小脚本用在工作上,然后有一些CZ写的c#工具,改改里面的数据和小的逻辑,改对的时候,CZ会表扬我一番,那时觉得好高兴啊!

还记得当时第一次看c#代码,当CZ打开VS的时候(那时候也没见过VS),我一看代码,卧槽,麻痹天书啊!上面那一列using是什么鬼?public后面那一堆大中小括号什么鬼?里面的一堆点点点是什么鬼?那个几个单词连在一起的巨长的是变量名?我当时强装镇定,但对我这种纸见过脚本语言的菜鸟,内心的震撼是巨大的。不过后来改数据的时候看多了倒也习惯了,直到有一天我看到了公司软件的源码。。

但是这个时期我仍然没有系统的学习C#,我觉得那个太难了,等我先学会python再说吧。然而到现在我要没有完全学会python,因为当时也是学到一个地方,再往后面就学不明白了,而且感觉也做不出什么有用的东西。

这个时候,大约是2015年7月份吧,不知道受了什么刺激,我就想做个网站,很快,我就摸索着从万网购买了域名,从淘宝购买了空间,还申请了帆布拍了照片做备案。这时候还啥都不会呢,就上网查,需要学HTML,好吧,就从网上搜索视频教程,因为我学编程习惯找视频学习,看书实在是太枯燥了,然后,下面,我要开始打广告了。我从网上找到一个教程“张鹏xx天带你玩转HTML”,基本是叫这个名字,我觉得讲的很好啊,比其他的要好,因为我决定看某个系列的视频是会对比一下,找一个讲的我能接受的。视频名字好像是7天玩转,我当然玩不转啦!估计得看了好几个月,还没看完。。但是基本的东西都会了,并且里面也讲了css,算是入门了。然后我就鼓捣我的网站,终于有了个主页面了,按照我想象的做了个排版,然而到今天每个版块都还是空的 T_T,因为实在是不知道写点啥,这个网站现在被我用来做测试了。。 咦?到现在还没出现广告?马上就要出现了!

在我学习这套HTML视频的时候,我注意到一个名字,确切的说是一个培训机构,从此,我又打开了“传智播客”的大门!

不吹不黑,传智播客的确是个良心培训机构,不仅是指教学质量,更重要的是,看它的视频到现在,我一分钱没花,因为网上都有,而且是它的官方网站提供免费下载的。。我觉得这点很难得,固然放出一部分视频也是为了吸引学员报名,但就是这些免费的视频也足够你学习一年半载了。

然后我疯狂的收集传智播客的.net系列视频,并开始系统学习,苏坤的c#基础、winform,赵建宇的基础加强,蒋坤的JavaScript,杨洪波的数据库、三层,王承伟的ASP.NET。每个老师讲的都各有特色,虽然只是看他们的视频,有的甚至连他们的相貌都不知道,但依然能感觉到他们的风采。苏坤的幽默,赵建宇的孩子气,蒋坤的博学认真,杨洪波的东北式幽默简直能当相声听,还有耿直boy王承伟,哈哈,感觉学习起来都不枯燥了。其实传智播客的金燕办公楼离我住的地方很近,都在昌平区,坐车半小时就到了。我想如果我以后在这一行业混好了,我一定去一趟传智播客,见一见那些老师,对他们说,虽然我没上过你们的课,但是我听了你们的每一堂课!

另外,在这期间,我还学习了郝斌老师的C语言,这个系列的视频我从大学的时候就看过,但当时只看过几节,会了个int a基本就没再学了,这次硬是看完了指针,虽然还是迷迷糊糊,但好歹是有了个印象。这里有个小细节,我曾经看过传智播客杨中科的一个介绍“WPF”的视频,在他找文件的时候,发现他的电脑里居然有郝斌的C语言视频!后来我知道杨中科也出过一套C语言视频“C语言也能干大事”,想来他也是觉得郝斌的C语言视频有可取之处吧!虽然有很多人不喜欢郝斌的这套视频,觉得他普通话不标准,英语更是不忍直视,与课程无关的废话太多,而且讲解中有一些错误。但是,对于一个初学者来说,他能把枯燥的理论化为生动的语言,让你理解,这就已经够了。

郝斌还有一套“数据库”,一套“数据结构”,一套“java”视频,有兴趣的同学可以搜索看一下,“数据结构”的视频网上应该讲的也不多,因为培训机构不会讲这个,推荐看一下。

说了这么多,我现在也只是一只小菜鸟,正在努力的学习当中,这些都是我学习的一些总结,至于推荐新手入门学习的语言,明眼人应该早就看出来了,就是C#,有了VS这个强大的IDE,写代码简直手到擒来,反正我现在的智商已经跟VS绑定了。而且学习C#入门很容易,学习过程很平缓,教学视频资料众多,而且还有博客园这种攻略网站,所以墙裂推荐!当然你非要学习Java我也只能说,小伙子,眼光不错!

总之,程序的这条道路必然是付出一定会有回报的,也只有付出了才能得到回报。

最后,写一句我一直认为正确的话:选择什么并不重要,重要的是坚持下去。

下面是代码,其实只有几十行,里面的几个方法都是常用的,如果没有,可以看下我转载的其他几篇文章,应该会对你有所帮助。

当然,前提是你能看到这篇文章。

 1 import os            #导入文件操作模块
2 import re #导入正则模块
3 import win32com #导入word操作模块
4
5 #准备打开word
6 from win32com.client import Dispatch,constants
7 w = win32com.client.Dispatch('Word.Application')
8 w.Visible = 0
9 w.DisplayAlerts = 0
10
11 #获取课文全路径
12 #..\1_一单元\1_《忆读书》\1_预习\1_音画课文
13 for root, dirnames, filenames in os.walk(r'C:\Users\jjw\Desktop\test\111_语文晋教版七年级上册'):
14 #字符串前面加r之后,正则里的\d等都不用变,'\'变成'\\'即可,开头末尾是'^$',匹配全部是'.*'
15 # if re.match(r'.*\\\d+_\w+\\\d+_.+\\1_预习\\1_音画课文$',dirpath):
16 # print(dirpath)
17 # else:
18 # print('未找到')
19 for filename in filenames:
20 if re.match(r'课文.rtf',filename):
21 classRTF = os.path.join(root,filename)
22 doc = w.Documents.Open(FileName = classRTF)
23 #文档最开始插入文字
24 #myRange = doc.Range(0,0)
25 #myRange.InsertBefore('哈哈哈哈哈哈')
26 #选中并修改全文字体
27 #par = doc.Range(doc.Content.Start,doc.Content.End)
28 #par.Font.Size = "14"
29
30 #1.修改全文字体、字号
31 w.ActiveDocument.Select()
32 w.Selection.Font.Name = "微软雅黑"
33 w.Selection.Font.Size = "14"#四号
34
35 #2.删除空格,替换字符串
36 w.Selection.Find.ClearFormatting()
37 w.Selection.Find.Replacement.ClearFormatting()
38 w.Selection.Find.Execute(" ",False,False,False,False,False,True,1,True,"",2)#普通空格
39 w.Selection.Find.Execute(" ",False,False,False,False,False,True,1,True,"",2)#这里面是个“口”的符号,全角空格
40
41 #3.删除空行,这里数量是1,因为回车占一个字符
42 for each in w.ActiveDocument.Paragraphs:
43 if each.Range.Words.Count == 1:
44 each.Range.Delete()
45
46 #作者后面插入空行
47 doc.Paragraphs(2).Range.InsertAfter('\n')
48
49 #前两行清除格式,主要是首行缩进
50 doc.Paragraphs(1).Range.Select()
51 w.Selection.ClearFormatting()
52 doc.Paragraphs(2).Range.Select()
53 w.Selection.ClearFormatting()
54
55 #前两行改字体、字号、居中
56 par1 = doc.Paragraphs(1).Range
57 #par1.ParagraphFormat.Reset()#取消首行缩进
58 par1.Font.Name = "微软雅黑"
59 par1.Font.Size = "28"#一号
60 par1.ParagraphFormat.Alignment = 1
61 par2 = doc.Paragraphs(2).Range
62 par2.Font.Name = "微软雅黑"
63 par2.Font.Size = "12"#小四
64 par2.ParagraphFormat.Alignment = 1
65 print("已处理:" + classRTF)
66 doc.Close()
67 w.Quit
68 print("处理完毕!")

python操作word(改课文格式)【最终版】的更多相关文章

  1. Python操作Word:常用对象介绍

    前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...

  2. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  3. python操作word

    python教程(百度经验) Python 操作Word(Excel.PPT等通用)   import win32comfrom win32com.client import Dispatch, co ...

  4. python操作word入门

    1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...

  5. Python操作Word【批量生成文章】

    http://www.cnblogs.com/codex/p/4668396.html 需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同 ...

  6. Python操作Word批量生成文章

    需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随 ...

  7. Python操作Word与Excel并打包

    安装模块 # Word操作库 pip install docx # Excel操作库 pip install openpyxl # 打包exe工具 pip install pyinstaller Wo ...

  8. python操作word、ppt的详解

    python使用win32com的心得   python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...

  9. Python操作Mysql实例代码教程在线版(查询手册)

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐   实 ...

随机推荐

  1. 主题 Theme 小结

    主题的使用 默认创建的Android工程中,在AndroidManifest.xml文件中有<application android:theme="@style/AppTheme&qu ...

  2. Eclipse 构建Maven项目--普通web项目 复制另外一个项目的配置文件导致的问题

  3. 国内站点经常使用的一些 CDN 静态资源公共库加速服务

    web开发人员们的福利来了..旨在为大家提供更快很多其它更好的静态资源库的CDN载入库方案! CDN公共库是指将经常使用的JS库存放在CDN节点,以方便广大开发人员直接调用. 与将JS库存放在serv ...

  4. iPad Air PSD设计模板

    免费下载 免费的ipad air PSD 设计,包含了3个不同颜色的外套的设计. 提供免费下载! 阅读原文:iPad Air PSD设计模板

  5. 锁Lock的概念

    并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再供其它访问类访问.

  6. Linux 安装tomcat 及过程中遇到的问题

    Linux 安装tomcat(tomcat能用的前提是系统已经安装jdk) 1.下载linux系统版tomcat,解压后通过ftp上传到Linux服务器     例:tomcat放在 /opt/tom ...

  7. Unity Editor类常用方法

    http://www.cnblogs.com/zhaoqingqing/p/3944718.html 一些比较常用的Editor功能我在之前的博客中也有提到过所以就不详细写啦,今天参考了一下 麒麟子( ...

  8. 利用Lucene把文本的字体格式进行改动,然后输出到一个新的文件里

    这里书中写的是charactorProcess(File file, String destFile) 这里被我改成.(String file,  String destFIle) 一个代表现有的文件 ...

  9. QtGui.QBrush

    The QtGui.QBrush is an elementary graphics object. It is used to paint the background of graphics sh ...

  10. [Exception JavaWeb 1] - Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P2' 附近有语法错误。

    严重: Servlet.service() for servlet [springMVC] in context with path [/ExceptionManageSystem] threw ex ...