- 实现目的
能够实现,依据所选项控制word文档中,对应控件的可编辑性;例如项目信息申请,我选择储备类,基本信息中项目性质不可编辑,而选择实施类的时候重要级别不可编辑其他可以编辑,如下截图:
- 实现方式一
word形成时候,所有控件(除下拉)不可编辑,然后依据选择下拉控制界面可编辑的按钮;下拉采用comboBox1,基本信息控件使用PlainTextContentControl
核心代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
1 Microsoft.Office.Interop.Word.Application newapp = ThisApplication; 2 UtilTools.UnProtectDoc(ref newapp); 3 object editorID = Word.WdEditorType.wdEditorEveryone; 4 this.plainTextContentControl1.Range.Editors.Add(ref editorID);
缺点:
1.不能支持重选;原因:重选
2.当用户重选的时候,需要处理已填写的控件;
3.处于可以多选但是不可使用的尴尬境界
优点:
1.jacob支持提取;
- 实现方式二
word打开的时候,以windowForm方式弹出窗体,让客户选择所要选择的类型,然后再进入word中,进行其他信息填写;
缺点:不可多选
有点:1.实现简单 2.jacob支持提取;
- 实现方式三
不使用office自带的控件,采用winform控件
优点:1.支持重选
缺点:1.java从word中提取信息有待去验证,不过可以通过xml方式变相解决该问题
- 对比表
实现方式 | 是否支持重选 | jacob是否支持 | 美观 | 实现难易 |
一(不通过) | 不 | 是 | 是 | 难 |
二 | 不 | 是 | 是 | 易 |
三 ok | 是 | 不确定 | 是 | 易 |