Foxtable(狐表)用户栏目专家坐堂 → 关于合并


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

主题:关于合并

美女呀,离线,留言给我吧!
susu312
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
关于合并  发帖心情 Post By:2018/8/15 20:33:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

老师,上图是foxtable的合并窗口,我想请教两个问题:

 

1、如何把上传的Excel文件的文件名显示在请选择要合并的表那里?

2、图中的那个表格 ,把标题也去掉了,点击要合并的表,表就会显示在那里,这个是咋实现的?

 

请老师给我一些类似的参考例子,我先研究下。

谢谢老师!


 回到顶部
美女呀,离线,留言给我吧!
susu312
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/15 23:19:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

老师,上图中,我获取的表两个sheet名称,我希望,我点击一个名称,该表sheet就显示到下表中

 

那个框的textchanged事件代码:

 

If e.Sender.Text > "" Then
    Dim t As Table = e.Form.Controls("Table1").Table
    Dim Book As New XLS.Book( vars("dlgFileName"))
    Dim Index As Integer = 0
    For n As Integer = 0 To Book.Sheets.count-1
       If  Book.Sheets(n).name = e.Sender.Text Then
            Index=n
            Exit For
       End If
    Next
    t.DataSource = Book.Sheets(Index)
End If

我感觉逻辑对着了 ,可是不知道为啥那个表不显示,请老师指导下,如果老师觉得我表述不清,我可以做实例哈


 回到顶部
美女呀,离线,留言给我吧!
susu312
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/15 23:48:00 [显示全部帖子]

以下是引用有点甜在2018/8/15 23:27:00的发言:

没有这种代码

 

t.DataSource = Book.Sheets(Index)

 

照抄2楼的帖子,或者参考

 

下载信息  [文件大小:312.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table

Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.OK Then
    If Connections.Contains("test") Then
        If DataTables.Contains("临时表") Then DataTables.Unload("临时表")
        Connections.Delete("test")
    End If
    Connections.Add("test", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dlg.FileName & ";Extended Properties='Excel 8.0;HDR=yes'")
    Dim tns As String = ""
    For Each tn As String In Connections("test").GetTableNames
        tns &= tn & "|"
    Next
    e.Form.Controls("ComboBox1").ComboList = tns.TrimEnd("|")
End If

 

老师,请您简要解释一下红色代码的作用,我不太理解这里


 回到顶部
美女呀,离线,留言给我吧!
susu312
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/15 23:55:00 [显示全部帖子]

我看指南上说是数据源,我感觉这个不需要数据源嘛,直接合并到里面指定的表里,我理解的还是不太透彻,我去看指南

 回到顶部
美女呀,离线,留言给我吧!
susu312
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 15:53:00 [显示全部帖子]

以下是引用有点甜在2018/8/15 23:27:00的发言:

没有这种代码

 

t.DataSource = Book.Sheets(Index)

 

照抄2楼的帖子,或者参考

 

下载信息  [文件大小:312.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

老师,

1、上图中年龄的数据类型是整型,如果用户导入的列中年龄列写的是字符,则不能导入,

 

2、把不能导入的单元格标红,并把这个一行导出

 

老师,上面这两个需求怎么实现呀?

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

[此贴子已经被作者于2018/8/16 15:55:31编辑过]

 回到顶部
美女呀,离线,留言给我吧!
susu312
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 17:05:00 [显示全部帖子]

以下是引用有点甜在2018/8/16 16:20:00的发言:

1、

 

Dim t As Table = e.Form.controls("table1").Table
Dim ls As object = t.GetCheckedRows
If ls.count = 0 Then ls = t.Rows
Dim dt As DataTable = DataTables("表A")
For Each r As Row In ls
    Dim dr As DataRow = dt.find("身份证号='" & r("身份证号") & "'")
    If dr Is Nothing Then
        Dim d As Double
        If Double.TryParse(r("年龄"),d) = False Then
            r.DataRow.SetError("年龄", "不是数字")
        Else
            dr = dt.AddNew()
            For Each dc As Col In t.Cols
                If dt.DataCols.Contains(dc.name) Then
                    dr(dc.Name) = r(dc.name)
                End If
            Next
        End If
    End If
Next
msgbox("合并完成")

 

2、动态添加一列,如果出错的,标记一下,最后你可以根据标记列筛选出数据

 

http://www.foxtable.com/webhelp/scr/1428.htm

 

老师,对于上面的验证,性别只能是男和女,且不能为空,该如何实现呀?


 回到顶部
美女呀,离线,留言给我吧!
susu312
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 18:09:00 [显示全部帖子]

以下是引用有点甜在2018/8/16 17:08:00的发言:

        If Double.TryParse(r("年龄"),d) = False Then
            r.DataRow.SetError("年龄", "不是数字")
        ElseIf r("性别") <> "男" andalso r("性别") <> "女" Then

            r.DataRow.SetError("性别", "有问题")

        Else
            dr = dt.AddNew()
            For Each dc As Col In t.Cols
                If dt.DataCols.Contains(dc.name) Then
                    dr(dc.Name) = r(dc.name)
                End If
            Next
        End If

老师,对应上面的验证:

1、错误行在table1中会有error提示,但是导出后就没了,如何给错误单位格标红,用户导出后,也可以看到错误的位置?

 


 回到顶部
美女呀,离线,留言给我吧!
susu312
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 21:19:00 [显示全部帖子]

以下是引用有点甜在2018/8/16 20:26:00的发言:

 

你这个就麻烦了 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=119223&skin=0

 

 

老师,看到导出来有颜色的EXCEl表格,感觉真的是好强大,但是,我不会做,求帮助

 

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

[此贴子已经被作者于2018/8/16 21:19:04编辑过]

 回到顶部
美女呀,离线,留言给我吧!
susu312
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 22:31:00 [显示全部帖子]

以下是引用有点甜在2018/8/16 22:25:00的发言:

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx" '设置筛选器
Dim flg As New SaveExcelFlags
flg.CellStyle = True
Dim dt As Table = e.Form.controls("table1").Table
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim Book As New XLS.Book '定义一个Excel工作簿
    Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
    Dim Style As Xls.Style = Book.NewStyle '新建一个样式
    Style.BackColor = Color.Red '样式的背景颜色设为红色
    For c As Integer = 0 To dt.Cols.Count -1 '添加列标题
        Sheet(0, c).Value = dt.Cols(c).Name
    Next
    For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
        For c As Integer = 0 To dt.Cols.Count -1
            Sheet(r +1, c).Value = dt.rows(r)(c)
            If dt.rows(r).DataRow.GetError(dt.Cols(c).name) > "" Then
                Sheet(r + 1,c).Style = Style '设置折扣单元格的样式
            End If
        Next
    Next
    '打开工作簿
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If

 

http://www.foxtable.com/webhelp/scr/1148.htm

 

 

 

老师,我也想来着,您看我的思路可以不?

 

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx" '设置筛选器
Dim flg As New SaveExcelFlags
flg.CellStyle = True
Dim t As Table = e.Form.controls("table1").Table
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
     t.SaveExcel(dlg.FileName, "人员信息",flg)  '保存文件
End If
Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(dlg.FileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.UsedRange

'For Each r As Row In t.Rows
    'For Each dc As Col In t.Cols   ''对于table1中的每一列
       'If  r.GetError(dc)) IsNot Nothing  Then
           'Ws.cells(r.index+t.HeaderRows+1, dc.Index+1).Interior.Color = RGB(clr.r, clr.g, clr.b) 这里赋值红色
       'End If
    'Next
'Next
app.visible = True

 

 

我先去理解您的代码

 

 

还是您的办法简单易理解。

[此贴子已经被作者于2018/8/16 22:36:42编辑过]

 回到顶部
美女呀,离线,留言给我吧!
susu312
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/16 22:51:00 [显示全部帖子]

老师,我还想请教一个问题:

 

导入功能:字段验证部分代码:

 

If r("性别") <> "男" AndAlso r("性别") <> "女" Then
            r.DataRow.SetError("性别", "只能为男或女")
            r.DataRow("标记")=1 
        ElseIf Double.TryParse(r("年龄"),d) = False Then
            r.DataRow.SetError("年龄", "不是数字")
            r.DataRow("标记")=1 
        ElseIf r("离退休单位").IsNull Then
           r.DataRow.SetError("离退休单位", "不能为空")
            r.DataRow("标记")=1 
        ElseIf r("离退休部门").IsNull Then
           r.DataRow.SetError("离退休部门", "不能为空")
            r.DataRow("标记")=1 
        Else    

 

您看我现在对字段都是这样验证的,

 

1、比如离退休单位、离退休部门、离退休职务,专业技术职务、这些字段都要求它非空,而且不能超过多少字?这个统一限定,还是一个字段一个字段限定? 能统一的话尽量不一个一个来

2、联系方式非空,且11位,且 都为数字,这个咋验证呀?

 

3、对于字段是时间类型的,应该要检查它是否为合法时间,就想检查合法数字一样?

 

    

   


 回到顶部
总数 14 1 2 下一页