Foxtable(狐表)用户栏目专家坐堂 → 读取PDF文档数据


  共有5376人关注过本帖树形打印复制链接

主题:读取PDF文档数据

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/10 22:24:00 [只看该作者]

Dim dlg As new OpenFileDialog
dlg.Filter = "文本文件|*.txt"
Tables("表A").StopRedraw
If dlg.ShowDialog = DialogResult.OK Then
    Dim strs As String = FileSys.ReadAllText(dlg.FileName)
    strs = strs.Replace(vblf,"")
    Dim rs() As String = strs.Split(vbcr)
    For i As Integer = 0 To rs.Length - 1
        Dim cs() As String = rs(i).Split(" ")
        If cs.Length > 4 Then
            Dim dr As DataRow = DataTables("表A").Addnew()
            Dim j As Integer = 0
            For Each s As String In cs
                If s > "" Then
                    j += 1
                    If j = 1 Then
                        dr("第一列") = s
                    End If
                    If j = 2 Then
                        dr("第二列") = s.substring(0, s.Length-1)
                    End If
                End If
            Next
        End If
    Next
End If
Tables("表A").ResumeRedraw

 回到顶部
帅哥哟,离线,有人找我吗?
cglsg5076
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1018 积分:6642 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2018/6/12 10:27:00 [只看该作者]

老师好,我的程序,需要读表A的数据,需求是筛选出第一列不重复数据作为LName,然后在此基础上,在第二列求出Lname的最小点号和最大点号,然后在求出LName后取出最小点号和最大点号所对应的坐标(第三列和第四列),最后将这些信息放到表B里,前两部我完成了,最后两部不知道如何实现,请问老师如何更改代码,多谢啦。

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目28.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/12 10:36:00 [只看该作者]

Dim LineNames As List(Of String)
LineNames = DataTables("表A").GetValues("第一列")
For Each LineName As String In LineNames
    Dim fdr1 As DataRow = DataTables("表A").find("[第一列]='" & LineName & "'", "第二列")
    Dim fdr2 As DataRow = DataTables("表A").find("[第一列]='" & LineName & "'", "第二列 desc")
    Dim ndr As DataRow = DataTables("表B").addnew
    ndr("第一列") = linename
    ndr("第二列") = fdr1("第二列")
    ndr("第三列") = fdr1("第三列")
    ndr("第四列") = fdr1("第四列")
    ndr("第五列") = fdr2("第二列")
    ndr("第六列") = fdr2("第四列")
    ndr("第七列") = fdr2("第四列")
Next

 回到顶部
帅哥哟,离线,有人找我吗?
cglsg5076
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1018 积分:6642 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2018/6/13 8:46:00 [只看该作者]

老师好,请问,我使用11楼的程序读取160M的文本文件,程序出现内存溢出的提示如下,但读取59M的文本文件,则能够顺利读取数据。请问如何改代码避免内存溢出的问题。多谢。

 

引发类型为“System.OutOfMemoryException”的异常。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/13 10:03:00 [只看该作者]

Dim dlg As new OpenFileDialog
dlg.Filter = "文本文件|*.txt"
Tables("表A").StopRedraw
If dlg.ShowDialog = DialogResult.OK Then
    Using sr As IO.StreamReader = New IO.StreamReader(dlg.FileName) '直接从文件路径生成'
    Dim line As String = sr.ReadLine() '读取一行
    Do While line IsNot Nothing '如果不为空.为空说明读取完毕,结束循环       
        Dim cs() As String = line.Split(" ")
        If cs.Length > 4 Then
            Dim dr As DataRow = DataTables("表A").Addnew()
            Dim j As Integer = 0
            For Each s As String In cs
                If s > "" Then
                    j += 1
                    If j = 1 Then
                        dr("第一列") = s
                    End If
                    If j = 2 Then
                        dr("第二列") = s.substring(0, s.Length-1)
                    End If
                End If
            Next
        End If
        line = sr.ReadLine() '读取下一行
    Loop
   
End Using

End If
Tables("表A").ResumeRedraw


 回到顶部
帅哥哟,离线,有人找我吗?
cglsg5076
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1018 积分:6642 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2018/6/14 12:00:00 [只看该作者]

老师好,使用您的代码(15楼),读取178万行的文本文件,在读到167万行的时候,仍然提示内存溢出,请问如何解决?我是将这167万行的数据放到一张表里,是否这167万行数据导致内存溢出吗?还是其他原因?谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/14 12:18:00 [只看该作者]

1、foxtable里面的表格处理100万行的数据,是相当吃力的。即便导入了,你要保存,也是很耗时的。

 

2、你用的是内部表还是外部表?大数据量尽量用外部表。

 

3、你可以把文件拆分成50万(甚至更小)来测试,分批次合并保存。

 

4、数据导入以后,也要控制加载,不可能每次打开项目都加载全部数据吧?


 回到顶部
帅哥哟,离线,有人找我吗?
cglsg5076
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1018 积分:6642 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2018/11/29 14:44:00 [只看该作者]

请问老师,我开发的程序如何自动适应不同分辨率的显示器,发现在不同的电脑里由于显示分辨率的不同导致一些控件显示不好,数据输入不方便甚至无法输入。请问如何解决。谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 16:15:00 [只看该作者]

以下是引用cglsg5076在2018/11/29 14:44:00的发言:
请问老师,我开发的程序如何自动适应不同分辨率的显示器,发现在不同的电脑里由于显示分辨率的不同导致一些控件显示不好,数据输入不方便甚至无法输入。请问如何解决。谢谢

 

方法一:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=67768&skin=0

 

方法二:一般通过【分辨率小的屏幕】设计界面,然后固定界面大小

 

方法三:设计好锚定、停靠等,然后把自动滚动设置成true


 回到顶部
帅哥哟,离线,有人找我吗?
cglsg5076
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1018 积分:6642 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2019/1/9 10:19:00 [只看该作者]

老师好,我用下面代码判断列sho是是否空,请问如何改代码?谢谢。

 

 

Dim drs As DataRow
drs = DataTables("Sh").Find("[Bl]= '" & name & "'")  
If DataTables("Sh").Isnull(drs(”Sho")) Then

endif


 回到顶部
总数 36 上一页 1 2 3 4 下一页