求一个系统设计的思路的改进
系统的核心功能是自动生成word文档,文档为树形结构,即一级目录,二级目录,三级目录,四级目录。。。。正文词条。。。。
录入数据(难)
:N级目录和正文词条(标题,内容)都由用户输入,这就需要提供一个编辑输入界面,由于正文词条是包含表格和图片的,因此编辑界面要支持编辑word文档(或者其他方案)。用户编辑好的内容会存入数据库中以实现共享。
生成文档(难):UI界面要将数据库中所有N级目录和正文词条(标题)以树形结构展示给用户,让用户勾选想要的目录和正文词条,然后将之按照其目录结构组合生成word文档并输出。
其他需求(较好实现):
对目录或正文的模糊查询
保存用户的某个选择方案
比较两个选择方案之间的差别
等等
----------------
目前我作了一个东西出来,基本实现了需求,但也存在缺陷,大体思路如下:
1.录入数据,即word编辑部分,我做了一个编辑word的控件,也就是一个容器控件在其中加载word编辑器,用户编辑完一个目录或者正文词条以后,就会将之存为一个临时word文档然后以二进制形式存入数据库。
2.生成文档,即word创建部分,将用户选择的目录和词条依次从数据库中取出,用在本地硬盘上用流存成一个临时word文档,并读取其中内容保存为特定的range对象序列,最后将这个对象序列按照目录级别写到同一个word文档对象中并生成
缺点如下:
1.录入部分的“用户编辑->保存临时word文档->数据库二进制字段”;以及生成部分的反序操作,消耗的资源太大,每读写一个目录或词条,都要创建一个临时word文档,也就意味着要执行一次word.document对象的创建、另存文档、注销操作,开销很大,据我测试大概要花费0.1s的时间。
2.word编辑控件实际上相当于另外启动一个word进程,即将嵌入一个word编辑窗口到我的程序UI中,因此在同一个界面中会有两种焦点状态,比如编辑好word控件中的内容后,要点击UI上的保存按钮时,必须点击两次,第一次点击焦点从word控件转移到UI界面,第二次点击才相当于执行了那个按钮的方法
----------------
类似于这种需求有没有现成的解决方案,或者各位有何高见?