搜索
查看: 34501|回复: 72

[自动化] 批量word文档转换为txt文本文档

    [复制链接]

75

主题

851

帖子

4971

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4971
发表于 2011-10-7 19:43:34 | 显示全部楼层 |阅读模式
本帖最后由 look 于 2011-11-19 13:14 编辑


import com;
import fsys;
import process;
import fsys.dlg;

io.open();
io.print(
"正在关闭已经打开的word...")

process.kill(
"winword.exe");
sleep(2000)

class wordApplication{
   
ctor( visible =0 ){
        
this =..com.CreateObject("Word.Application")     
        
assert(this,"Word应用程序未能打开!" )   
        
this.Visible = visible
    };
    load =
function(filePath,visible=0,readOnly=0){
        fullpath =
assert(..io.exist(filePath), "文档“"+filePath+"”不存在,word已关闭!" )
        
var doc = this.Documents.Open(fullpath,visible,readOnly)
        
return assert(doc,"打开文档“"+filePath+"”失败,word已关闭!")
    }
}

//创建word对象
var wdApp = wordApplication();
math.randomize();

var docToTxt=function(file,path){

   
//打开word文档
    var doc = wdApp.load(file);
   
   
//获取DOC文件名
    var strdocname = wdApp.ActiveDocument.Name;
   
   
//判断是否临时文件
    var istempdoc=string.match(strdocname,"^<\~\$>");
   
if(istempdoc){
        doc.close(0);
        
return ;
    }
   
   
//转化文件名为txt文件名
    var txtdocname = string.replace(strdocname,"\.doc$",".txt");
   
if(!txtdocname){
   
        
//获取首行文本   
        var strtopline=wdApp.ActiveDocument.Paragraphs(1).Range.Text
        
        
if(strtopline){
        
            
if(#strtopline>20){   
                strtopline=string.left(strtopline,8,
true);
            }
            
            
//文件名去除空格,中文空格,制表符,回车   
            txtdocname=string.replace(strtopline,'< >|< >|<\t>|<\r\n>',"");
            
            
//文件名中剔除非法字符
            txtdocname=string.replace(txtdocname,'[\\<\\>\\/\\\\\|\\:\\"\\"\\*\\?]',"");
            
            
if(!txtdocname){
               
//随机txt文件名
                txtdocname = string.random(math.random(1,10))++".txt"
            }
        }
    }
   
   
//另存为txt文档
    wdApp.ActiveDocument.SaveAs(path+txtdocname,2/*wdFormatText*/)
   
   
//关闭当前文档
    doc.close(0);
}

var opendir=fsys.dlg.opendir();
fsys.enum(  opendir,
            
"*.doc",
            
function(dir,file,fullpath){
               
if(file){
                    io.print(
"正在转换:"+dir++"   目录下的   "++file)                                    
                    io.print(
"")                    
                    docToTxt(fullpath,dir);
                }
            }
            ,
true
          );

io.print(
"转换完毕,谢谢使用!")
io.print(
"正在关闭word.............")

//退出WORD
wdApp.Quit() ;
wdApp=
null;
collectgarbage("collect")

execute("pause")
io.close();






评分

参与人数 4专家分 +200 银币 +96 收起 理由
crcc_3c + 5 很给力!
cjc0045 + 90 赞一个!
低调点 + 100 + 1 很给力!
quicker + 100

查看全部评分

小时候,幸福是一件东西,拥有就是幸福; 长大了,幸福是一个目标,达到就是幸福; 成熟后,发现幸福原来是一种心态,领悟就是幸福.
回复

使用道具 举报

9

主题

79

帖子

1000

积分

荣誉会员

Rank: 8Rank: 8

积分
1000
发表于 2011-10-7 20:48:51 | 显示全部楼层

想问一下,这样的程序在运作过程中,会不会影响word本身的其他使用?比如我在运行这个程序的时候,同时在用word写文章。

想问一下,这样的程序在运作过程中,会不会影响word本身的其他使用?比如我在运行这个程序的时候,同时在用word写文章。
回复

使用道具 举报

75

主题

851

帖子

4971

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4971
 楼主| 发表于 2011-10-7 21:09:41 | 显示全部楼层

[quote][size=2][color=#999999]sphawkcn 发表于 2011-10-7 20:48[/color] [url=forum.ph

sphawkcn 发表于 2011-10-7 20:48
想问一下,这样的程序在运作过程中,会不会影响word本身的其他使用?比如我在运行这个程序的时候,同时在用 ...

会影响的
下面这句的意思是获取当前活动文档的文件名
var strdocname = wdApp.ActiveDocument.Name;
小时候,幸福是一件东西,拥有就是幸福; 长大了,幸福是一个目标,达到就是幸福; 成熟后,发现幸福原来是一种心态,领悟就是幸福.
回复

使用道具 举报

5

主题

124

帖子

1340

积分

四级会员

Rank: 6Rank: 6

积分
1340
发表于 2011-10-7 22:25:59 | 显示全部楼层

用vbs 好像也可以转 看看楼主用什么办法

用vbs 好像也可以转 看看楼主用什么办法
回复

使用道具 举报

2

主题

44

帖子

348

积分

二级会员

Rank: 3Rank: 3

积分
348
发表于 2011-10-8 10:13:03 | 显示全部楼层

先瞧瞧{:3_48:}

先瞧瞧
回复

使用道具 举报

6

主题

66

帖子

519

积分

荣誉会员

Rank: 8Rank: 8

积分
519
发表于 2011-10-8 10:52:31 | 显示全部楼层

看看,肯定是好东西

看看,肯定是好东西
回复

使用道具 举报

17

主题

97

帖子

750

积分

荣誉会员

Rank: 8Rank: 8

积分
750
发表于 2011-10-8 14:08:44 | 显示全部楼层

应该有许多人需要!

应该有许多人需要!
有太多东西要学,可是感觉没时间。
回复

使用道具 举报

1

主题

32

帖子

259

积分

二级会员

Rank: 3Rank: 3

积分
259
发表于 2011-10-8 16:36:12 | 显示全部楼层

看看,学习一下。谢谢楼主!

看看,学习一下。谢谢楼主!
回复

使用道具 举报

6

主题

21

帖子

145

积分

一级会员

Rank: 2

积分
145
发表于 2011-10-8 19:27:07 | 显示全部楼层

厉害,可以代替vba !!

厉害,可以代替vba
!!
回复

使用道具 举报

10

主题

586

帖子

3432

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3432
发表于 2011-10-8 19:54:02 | 显示全部楼层

强势围观 - -

强势围观 - -
回复

使用道具 举报

3

主题

22

帖子

171

积分

一级会员

Rank: 2

积分
171
QQ
发表于 2011-10-9 09:02:56 | 显示全部楼层

看看怎么操作的!

看看怎么操作的!
学习要从哪里下手呢,前辈们给点思路 参考。
回复

使用道具 举报

2

主题

8

帖子

99

积分

一级会员

Rank: 2

积分
99
发表于 2011-10-9 09:27:01 | 显示全部楼层

看哈内容呀。

看哈内容呀。
回复

使用道具 举报

0

主题

13

帖子

1375

积分

四级会员

Rank: 6Rank: 6

积分
1375
发表于 2011-10-9 12:50:20 | 显示全部楼层

强势围观 - -


强势围观 - -
回复

使用道具 举报

7

主题

46

帖子

409

积分

二级会员

Rank: 3Rank: 3

积分
409
发表于 2011-10-9 13:37:01 | 显示全部楼层

看看,学习学习,感谢感谢

看看,学习学习,感谢感谢
回复

使用道具 举报

10

主题

71

帖子

492

积分

荣誉会员

Rank: 8Rank: 8

积分
492
发表于 2011-10-9 17:19:33 | 显示全部楼层

学习下,呵呵!

学习下,呵呵!
回复

使用道具 举报

10

主题

586

帖子

3432

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3432
发表于 2011-10-9 21:25:56 | 显示全部楼层

[quote][size=2][color=#999999]sphawkcn 发表于 2011-10-7 20:48[/color] [url=forum.ph

sphawkcn 发表于 2011-10-7 20:48
想问一下,这样的程序在运作过程中,会不会影响word本身的其他使用?比如我在运行这个程序的时候,同时在用 ...
  1. io.open();
  2. io.print("正在关闭已经打开的word...")

  3. process.kill("winword.exe");
复制代码
回复

使用道具 举报

9

主题

79

帖子

1000

积分

荣誉会员

Rank: 8Rank: 8

积分
1000
发表于 2011-10-9 21:30:05 | 显示全部楼层

其实我很想知道的是,如何在不安装word的电脑上提取word文件中的文本。

其实我很想知道的是,如何在不安装word的电脑上提取word文件中的文本。
回复

使用道具 举报

0

主题

26

帖子

170

积分

培训班

积分
170
发表于 2011-10-9 22:29:08 | 显示全部楼层

看代码学习学习

看代码学习学习
回复

使用道具 举报

4

主题

150

帖子

901

积分

三级会员

Rank: 4

积分
901
发表于 2011-10-10 15:16:28 | 显示全部楼层

强势围观者 杯具

强势围观者 杯具
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-11-23 20:53 , Processed in 0.093750 second(s), 23 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表