Foxtable(狐表)用户栏目专家坐堂 → [求助]Excel表导入时,可否设定为第一张工作表


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

主题:[求助]Excel表导入时,可否设定为第一张工作表

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


加好友 发短信
等级:幼狐 帖子:174 积分:1582 威望:0 精华:0 注册:2016/9/28 11:48:00
  发帖心情 Post By:2019/9/26 14:54:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:科伦2.xls
这个表麻烦看下

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/26 15:23:00 [只看该作者]

首先这个execl文件有问题,使用execl打开后保存一次才行。

其次代码改改

Dim xwj As  new  OpenFileDialog
xwj.Filter="Excel文件(*.xls)|*.xls"
If xwj.ShowDialog=DialogResult.Ok Then
    DataTables("比例计算").DeleteFor("")
    Dim Book As New XLS.Book(xwj.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("比例计算").StopRedraw()
    Dim nms() As  String = {"数量","采购价","通用名","基药类别","采购类别","招标单元信息","配送企业"}
    Dim dict As new Dictionary(of String,Integer)
    For i As Integer = 0 To sheet.Cols.Count -1
        If Array.IndexOf(nms,sheet(0,i).Value) > -1 Then dict.Add(sheet(0,i).Value,i)
    Next
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As  Row = Tables("比例计算").AddNew()
        For  m As  Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,dict(nms(m))).Value
        Next
    Next
    Tables("比例计算").ResumeRedraw()
End If


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


加好友 发短信
等级:幼狐 帖子:174 积分:1582 威望:0 精华:0 注册:2016/9/28 11:48:00
  发帖心情 Post By:2019/9/26 16:17:00 [只看该作者]

再问下,我的是用wps保存的,是不是始终成在这个问题,原来用Dim xwj As  new  OpenFileDialog
Dim str As String
Dim value() As String
xwj.Filter="Excel文件(*.xls)|*.xls"
If xwj.ShowDialog=DialogResult.Ok Then
    Dim zy As new Merger
    DataTables("比例计算").DeleteFor("")
    zy.SourcePath=xwj.FileName
    str=xwj.FileName
    value=str.Split("\")
    str=Value(value.length-1)
    str=str.SubString(0,str.length-4)
    zy.SourceTableName=str+"$"
    zy.Fields="数量,采购价,通用名,基药类别,采购类别,招标单元信息,配送企业"
    zy.DataTableName="比例计算"
    zy.Format="Excel"
    zy.Merge()
End If
这个方式不存在这个情况,我用wps保存都不行,只能用excel保存了才可以
[此贴子已经被作者于2019/9/26 16:17:25编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/26 16:42:00 [只看该作者]

XLS.Book使用的是execl的组件处理的,而wps保存的文件会存在一定的兼容性,导致execl的组件无法正常解析

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


加好友 发短信
等级:幼狐 帖子:174 积分:1582 威望:0 精华:0 注册:2016/9/28 11:48:00
  发帖心情 Post By:2019/9/27 8:12:00 [只看该作者]

哦,那这种就不好解决了

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


加好友 发短信
等级:幼狐 帖子:174 积分:1582 威望:0 精华:0 注册:2016/9/28 11:48:00
  发帖心情 Post By:2019/9/27 10:14:00 [只看该作者]

想到另一个方法另存为csv文件,因为使用者是新手,还想用wps打开看所以用这个格式。代码如下:
Dim dlg As new  OpenFileDialog
dlg.Filter="csv文件(*.csv)|*.csv"
If dlg.ShowDialog= DialogResult.Ok Then 
Dim str As String = FileSys.ReadAllText(dlg.FileName, Encoding.Default)
Dim ary() As String = str.Split(new Char() {chr(10), Chr(13)})
DataTables("比例计算").DeleteFor("")
DataTables("比例计算").StopRedraw
For i As Integer = 1 To ary.Length-2 
    Dim s() As String = ary(i).Split(",")
    Dim nr As DataRow = DataTables("比例计算").AddNew
        nr("数量") = s(1).trim()
        nr("采购价") = s(2).trim()
        nr("通用名") = s(4).trim()
        nr("基药类别") = s(12).trim()
        nr("采购类别")=s(16).Trim()
        nr("招标单元信息")=s(17).Trim()
        nr("配送企业")=s(20).Trim()
Next
DataTables("比例计算").ResumeRedraw
End If
谢谢版主

 回到顶部
总数 16 上一页 1 2