自动化工具word文档批量转html
企业有很多的科室,科室的每个人或多或少都会写一些文档,有些文档领导需要浏览,解决的办法是将编辑的文档打印出来,供领导浏览,或是为了节约企业成本,文档就在人与人这间或部门之间copy过来,copy过去。如果员工或领导不善于管理文档,就会造成有很多的版本,或者是在以后无法轻松的找到相关的文档。
所以企业专门找到一个人(文档管理员),让这个人负责文档的管理。而文档的管理的方式有两种形式,第一种是doc形式的(即word文档),第二种是分享形式的。
对于第一种文档管理方式,只涉及到这个文档管理员,收集各部门的文档,将部门规划成一种如下图的形式:

然后在部门中再规划人员,如下图:

通过第一种形式,那么文档的管理也就解决了。只保存最新文档,对文档进行汇总等,如果领导需要什么文档的话,只需要让文档管理员打印并呈送就可以了。
但是领导或职员需要什么文档?领导也不是一台机器,没有过目不忘的本领,并不知道公司有什么文档?如果文档中有错字有谁来发现?所以为了解决这几个问题,需要实现文档的分享,也就是第二种文档管理方式。
解决思路是在局域网中建立一个网站,企业中的任何一个人都可以浏览公司的文档。通过这个网站,企业中的任何一个人也都知道本企业有什么文档,寻找资料也会方便些。
网站也很简单,只需要实现目录结构上的复制,部门对应部门,人员对应人员。再把doc转换成html,文档名称对应页面名称。然后再自动生成网站首页,这个网站也就做完了。
技术实现:
在这里只是大体介绍一下,如果需要了解技术详细的话,可以下载下面的源代码。
1.给定需要转换的目录(包含word文档的目录)和输出目录
2.读取目录中的所有word文档
3.将所有的word文章转换成Html文件,并将html文件保存到输出目录下对应的目录(即部门对应部门,人员对应人员),代码如下
public void ToHtml(string filePath)
{
this.FilePath = filePath;
Word.Application word = new Word.Application();
Type wordType = word.GetType();
Word.Documents docs = word.Documents;
Type docsType = docs.GetType();
Word.Document doc = (Word.Document)docsType.InvokeMember("Open",
System.Reflection.BindingFlags.InvokeMethod, null, docs,
new Object[] { (object)FilePath, true, true }); //打开word文档
Type docType = doc.GetType();
CreateDirectory(TargetDirectoryPath); //源目录对应目标目录
string strSaveFileName = TargetFilePath; //转换成目标文件路径
object saveFileName = (object)strSaveFileName;
//另存为html,关闭文档并退出
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
}
word转为html后,测试页面样式:

4.生成首页,并将首页保存到输出目录下。为使首页结构清晰,使用了jquery插件treeview。
public string ToHtmlStructure(DirectoryInfo directory)
{ FileInfo[] files = null;
DirectoryInfo[] subDirs = null;
files = directory.GetFiles("*.*");
_sb.AppendLine(AddUl());
foreach (FileInfo fi in files)
{ string relativelinks = Uri.EscapeUriString(fi.FullName.Replace(string.Format(@"{0}\", DirectoryPath), "").Replace('\', '/'));
_sb.AppendLine(string.Format("<li><a href='{0}' target='_blank'>{1}</a></li>",relativelinks, fi.Name));
}
subDirs = directory.GetDirectories();
foreach (DirectoryInfo dirInfo in subDirs)
{
_sb.AppendLine("<li>");
_sb.AppendLine(dirInfo.Name);
ToHtmlStructure(dirInfo);
_sb.AppendLine("</li>");
}
_sb.AppendLine("</ul>");
return _sb.ToString();
}
生成的首页显示大体如下(非企业的文档,而是自己的文档):

开发环境:win7+vs2010+office2007
测试环境:win7+office2007
总结:
在开发这个工具时,最主要的还是word转html。而我使用的方式是com方法调用word的open,saveas,close和quit。这种方式会在word的最近浏览记录中留下信息,如下:

并且html的生成完全由word控制,生成的html的样式也完全由word控制。有的文章转换为html后,显得html内容不美观。我测试了一下,安装不同的office版本,office2003(无法转换高版本的文档),office2007,office2010,版本越高,转换后的html样式越好。
我也在网上寻找了word转html的控制方式(包括国内的、国外的),发现如果想完全控制转换,似乎是不可能的。当然也有doc转换工具,如google doc。不知道我这个观点对不对?
源代码下载:源码Convertor.rar
自动化工具word文档批量转html的更多相关文章
- word文档批量合并工具
		
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; En ...
 - Python将word文档批量转PDF
		
前面有一篇<Python批量创建word文档(2)- 加图片和表格>的文章,利用这篇文章创建的word文档来批量转PDF文档.代码: 1 ''' 2 #python批量将word文档转换成 ...
 - python 使用win32com实现对word文档批量替换页眉页脚
		
最近由于工作需要,需要将70个word文件的页眉页脚全部进行修改,在想到这个无聊/重复/没有任何技术含量的工作时,我的内心是相当奔溃的.就在我接近奔溃的时候我突然想到完全可以用python脚本来实现这 ...
 - python自动化之word文档
		
#########################docx文件############################ ''' .docx文件有很多结构,有3种不同的类型来表示 在最高一层,Docum ...
 - 如何用python自动编写《赤壁赋》word文档
		
目录 前言 安装-python-docx 一.自动编写<赤壁赋> 准备数据 新建文档 添加标题 添加作者 添加朝代 添加图片 添加段落 保存word文档 二.自动提取<赤壁赋> ...
 - 使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)
		
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_96 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些w ...
 - 一键批量打印EXCEL、WORD文档
		
一键批量打印EXCEL.WORD文档,本方法也可以打印同一个文档N份,可以批量打印A3.A4文档,包括单.双面打印等.希望能帮到广大朋友.请大家注重原创版权,不得在未经许可的下转载.传播,或者用来对同 ...
 - 批量导出access某表内容到word文档
		
一.需求: 需要将表中每一条记录中的某些内容导出在一个word文档中,并将这些文档保存在指定文件夹目录下 二.界面,简单设计如下: 三.添加office相关引用 添加后可在解决方案资源管理器中看到: ...
 - word文档标题级别批量更改——批量降级与升级实例
		
word文档标题级别批量更改——批量降级与升级实例 word文档标题级别批量更改——批量降级实例 2012年12月21日16:30:44 现有一个3级文档结构的word文档,如下图所示 先需要将上 ...
 
随机推荐
- unity3d Human skin real time rendering 真实模拟人皮实时渲染
			
先放出结果图片...由于网上下的模型是拼的,所以眼皮,脸颊,嘴唇看起来像存在裂痕,解决方式是加入曲面细分和置换贴图 进行一定隆起,但是博主试了一下fragment shader的曲面细分,虽然细分成功 ...
 - test、exec、match区别
			
test.exec.match的简单区别 1.test test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = ...
 - 原生JavaScript的省市县三级联动
			
三级联动是我们写表单时必不可少的,比如在写收货地址时,就用到他了,最近在看原生JavaScript,从基础写起,待完善,以后再写个jquery版的. <!DOCTYPE html> < ...
 - Hibernate自定查询返回list<?>
			
/** * * @param session * :一个会话 * * @param hql * :是需要执行的hql语句, * * @param offset * 设置开始位置 * * @param ...
 - 关于谷歌、火狐 右键没有发送到onenote选项
			
关于chrome .FF 右键没有发送到onenote选项 问题: 使用Microsoft office中的onenote作为自己平时学习和工作的 ...
 - PC机安装Qt以及QT交叉编译环境                                                    分类:            OpenCV             ZedBoard             shell             ubuntu             Eye_Detection             2014-11-08 18:57    246人阅读    评论(0)    收藏
			
PC: apt-get install qtcreator Qt Embedded for ZedBoard: 下载qt-everywhere-opensource-src-4.7.3.tar.gz, ...
 - shell 验证ip
			
#!/bin/bash function isIp(){ IP=$ ];then echo "Wrong IP!" exit else a=`echo $IP | awk -F . ...
 - [Angular 2] 9. Replace ng-modle with #ref & events
			
Let's say you want to write a simple data bing app. when you type in a text box, somewhere in the ap ...
 - Netty源代码学习——Included transports(变速箱)
			
Transport API核心: Channel介面 类图表示Channel含有Pipeline和Config接口,pipeline上一节有所介绍. Channel是线程安全的,这表示在多线环境下操作 ...
 - [转] 一个资深iOS开发者对于React Native的看法
			
当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很 ...