Foxtable(狐表)用户栏目专家坐堂 → Import方式导入excel表,怎么限制非文本内容的空白列导入呢?


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

主题:Import方式导入excel表,怎么限制非文本内容的空白列导入呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
Import方式导入excel表,怎么限制非文本内容的空白列导入呢?  发帖心情 Post By:2021/11/19 0:17:00 [只看该作者]

Import方式导入excel表,怎么限制非文本内容的空白列导入呢?

使用过程中遇到当前excel表中只有10列  ,结果导入的时候会提示不能超过225?甚至获取到的第一行列名都大于225的  实际列只有10列,怎么增加判断呢?


Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel97文件|*.xls|Excel2007文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName '指定数据文件\
    Dim Str1 As String = FileSys.GetName(dlg.FileName)  '从文件路劲中获取文件名称
    Dim book As new XLS.Book(dlg.FileName)

Dim c6 As WinForm.ComboBox = e.Form.Controls("ComboBox6")
Dim a1 As Integer = c6.Value
    ' MessageBox.Show(book.Sheets(0).name)
    ip.SourceTableName = book.Sheets(a1).name '指定要导入的表
    ip.NewTableName =book.Sheets(a1).name  's '导入后的表名
    If Str1 > "" AndAlso Str1.Contains("xlsx") Then
        ' MessageBox.Show("xlsx文件")
        ip.Format="Excel2007"
    Else If Str1 > "" AndAlso Str1.Contains("xls") Then
        ' MessageBox.Show("xls文件")
        ip.Format="Excel"
    End If
    ' MessageBox.Show("1")
    ip.Import()

End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107649 积分:547554 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/19 8:20:00 [只看该作者]

Importer没有办法判断,这个是execl文件本身的问题,看起来这些列没有内容,实际上都用到了,应该是生成这个文件的程序导出功能有问题

然后使用这种方式合并:http://www.foxtable.com/webhelp/topics/2334.htm

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Importer没有办法判断,这个是execl文...  发帖心情 Post By:2021/11/19 15:15:00 [只看该作者]

图片点击可在新窗口打开查看
图片点击可在新窗口打开查看
如此这样  老师有没有什么办法解决呢?

在选择需要导入的数据表名之后的代码
If e.sender.value = ""  Then
    Return
End If
Dim r As Row
Dim dc As Col
Dim dt As Table = Tables(Vars("btname11"))
Dim t As Table = e.Form.Controls("Table1").Table
Dim i As Integer
Dim nms As String
Dim nms1 As String
Dim cnt As Integer = DataTables(Vars("btname11")).DataCols.Count


Dim Book As New XLS.Book(e.Form.Controls("TextBox1").value)
Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
t.StopRedraw
t.DataTable.DataRows.clear
Dim zd1 As New Dictionary(Of Integer, String)
For i = 0 To Sheet.Cols.count - 1
    r = t.AddNew()
    r("来源字段") = Sheet(0,i).Value
    r("来源列数")=i
    zd1.Add(r("来源列数"),r("来源字段"))
Next
For Each dc In dt.cols
    nms = nms & "|" & dc.name
    t.cols("接收字段").ComboList = nms
Next
For i1 As Integer = 0 To cnt - 1
    nms1 = nms1 & "|" & i1
    t.cols("接收列数").ComboList =nms1 & "|"
Next
t.cols("是否唯一").ComboList ="是" & "|" & "不是"
t.ResumeRedraw
[此贴子已经被作者于2021/11/19 15:16:35编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107649 积分:547554 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/19 15:20:00 [只看该作者]

For i = 0 To Sheet.Cols.count - 1
if Sheet(0,i).text > ""
    r = t.AddNew()
    r("来源字段") = Sheet(0,i).Value
    r("来源列数")=i
    zd1.Add(r("来源列数"),r("来源字段"))
end if
Next

 回到顶部