以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- [求助]提取word文档字符串 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=115131)
|
-- 作者:天一生水
-- 发布时间:2018/3/1 16:07:00
-- [求助]提取word文档字符串
文件列 [裁判文书] 添加文件时,能否自动提取word文档内 标志性文字后的字符串?
1、将“判决”或“裁定”两个字符提取到 [裁判类型];
2、将“判决如下:”或“裁定如下:”后面的内容提取到 [裁判内容];
见下图:
此主题相关图片如下:image 1.jpg
*************************************
此主题相关图片如下:image 2.jpg
************************************* 此主题相关图片如下:image 3.jpg
[此贴子已经被作者于2018/3/1 16:12:37编辑过]
|
-- 作者:有点甜
-- 发布时间:2018/3/1 16:40:00
--
Dim dlg As new OpenFileDialog dlg.Filter = "word|*.doc;*.docx" If dlg.ShowDialog = DialogResult.OK Then Dim app As New MSWord.Application try Dim doc = app.Documents.Open(dlg.fileName) Dim count = Doc.Characters.Count Dim rng As MSWord.Range = Doc.Range(Start:=0, End:=count) msgbox(rng.Text) Dim str As String = rng.text Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=裁定如下).*?(?=审 判 长)") If mc.count >= 1 Then msgbox("裁定") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=判决如下).*?(?=审 判 长)") If mc.count >= 0 Then msgbox("判决") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else msgbox("无法识别") End If End If app.Quit catch ex As exception msgbox(ex.message) app.Quit End try End If
|
-- 作者:天一生水
-- 发布时间:2018/3/1 17:44:00
--
谢谢甜老师!
能不能只出现一次文件打开窗口,因为在添加列文件时已经选过一次文件了,在事件里又要重选一次文件。
|
-- 作者:有点甜
-- 发布时间:2018/3/1 18:27:00
--
肯定可以,看红色代码,想办法弄到路径。
Dim app As New MSWord.Application try Dim doc = app.Documents.Open("d:\\test.doc") Dim count = Doc.Characters.Count Dim rng As MSWord.Range = Doc.Range(Start:=0, End:=count) msgbox(rng.Text) Dim str As String = rng.text Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=裁定如下).*?(?=审 判 长)") If mc.count >= 1 Then msgbox("裁定") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=判决如下).*?(?=审 判 长)") If mc.count >= 0 Then msgbox("判决") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else msgbox("无法识别") End If End If app.Quit catch ex As exception msgbox(ex.message) app.Quit End try
|
-- 作者:天一生水
-- 发布时间:2018/3/1 18:45:00
--
路径改为:
Dim doc = app.Documents.Open(ProjectPath & "裁判文书\\" & e.DataRow("承办人") & "\\" & e.DataRow("案号") & ".doc" )
感觉没有错,但是弹出,未找到文件。
我的存放文件路径代码是:
DataTables("数据表").DataCols("裁判文书").DefaultFolder = ProjectPath & "裁判文书\\" & e.DataRow("承办人") & "\\"
列属性的存放地址没有设置,是空的,添加文件后变成“C:\\Users\\Administrator\\Desktop\\提取文档内容\\裁判文书\\AAA\\”
怎么改?
[此贴子已经被作者于2018/3/1 18:53:44编辑过]
|
-- 作者:有点甜
-- 发布时间:2018/3/1 20:15:00
--
|
-- 作者:天一生水
-- 发布时间:2018/3/1 20:50:00
--
还是提示:
此主题相关图片如下:image 4.jpg
|
-- 作者:有点甜
-- 发布时间:2018/3/1 22:13:00
--
修改代码
Dim dr As DataRow = e.DataRow Dim file = e.SourceFolder & "\\" & e.filename If dr.IsNull("案号") Or dr.IsNull("承办人") Then MessageBox.Show("案号及承办人不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Cancel = True Else e.FileName = dr("案号") & ".doc" End If
Select Case e.DataCol.Name Case "裁判文书" e.Subfolder = e.DataRow("承办人") \'将此文件存放在目录名为承办人名称的子目录中. Dim app As New MSWord.Application try Dim doc = app.Documents.Open(file) Dim count = Doc.Characters.Count Dim rng As MSWord.Range = Doc.Range(Start:=0, End:=count) msgbox(rng.Text) Dim str As String = rng.text Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=裁定如下).*?(?=审 判 长)") If mc.count >= 1 Then msgbox("裁定") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=判决如下).*?(?=审 判 长)") If mc.count >= 0 Then msgbox("判决") For i As Integer = 0 To mc.count-1 msgbox(mc(i).value) Next Else msgbox("无法识别") End If End If app.Quit catch ex As exception msgbox(ex.message) app.Quit End try End Select
|
-- 作者:天一生水
-- 发布时间:2018/3/1 23:08:00
--
请教老师一个问题,上面的代码哪一句是把添加的文件放入“裁判文书”里的,一直没看出来。
这句:Dim file = e.SourceFolder & "\\" & e.filename,是来源目录吗?起什么作用?
要是局域网路径怎么改?
[此贴子已经被作者于2018/3/1 23:09:03编辑过]
|
-- 作者:有点甜
-- 发布时间:2018/3/2 1:13:00
--
以下是引用天一生水在2018/3/1 23:08:00的发言:
请教老师一个问题,上面的代码哪一句是把添加的文件放入“裁判文书”里的,一直没看出来。
这句:Dim file = e.SourceFolder & "\\" & e.filename,是来源目录吗?起什么作用?
要是局域网路径怎么改?
[此贴子已经被作者于2018/3/1 23:09:03编辑过]
关键看afterOpenProject事件的代码,设置 DefaultFolder 然后看这句代码 e.Subfolder = e.DataRow("承办人")
局域网路径的话,只需要修改DefaultFolder的路径即可
|