以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 自选excel位置添加导入数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190898) |
|
-- 作者:采菊东篱下 -- 发布时间:2024/3/12 17:14:00 -- 自选excel位置添加导入数据 \'这是自选Excel位置导入生成的新表方法: Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ip As New Importer ip.SourcePath = dlg.FileName \'指定数据文件 ip.NewTableName = "基本信息" ip.Format = "Excel" ip.Import() \'导入 End If 我想自选Excel位置把数据添加到基本信息表中: Dim Book As New XLS.Book Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Sheet As XLS.Sheet = dlg.FileName Tables("基本信息").StopRedraw() Dim nms() As String = {"棋赛名称", "棋赛副名", "编号", "姓名", "身份"} Dim i1 As Integer = Array.Indexof(nms, "棋赛名称") Dim i2 As Integer = Array.Indexof(nms, "编号") Dim i3 As Integer = Array.Indexof(nms, "姓名") For n As Integer = 1 To Sheet.Rows.Count - 1 Dim bh1 As String = sheet(n, i1).Text Dim bh2 As Integer = sheet(n, i2).Value Dim bh3 As String = sheet(n, i3).Text Dim dr As DataRow = DataTables("基本信息").SQLFind("[棋赛名称] = \'" & b1 & "\' And [编号] =" & bh2 & " And [姓名] =\'" & bh3 & "\'") If dr Is Nothing Then \'如果不存在同编号的订单 dr = DataTables("基本信息").AddNew() End If For m As Integer = 0 To nms.Length - 1 dr(nms(m)) = Sheet(n, m).Value Next Next Tables("基本信息").ResumeRedraw() End If 绿色代码是自选Excel位置,导入新生成的表数据的方法,现在我想自选Excel位置把Excel中的数据添加到已存在且有数据,这些数据是以前的基本信息,与本些无关,不允许重复输入的数据,我这样写,红色标注部份能指定XLS.Book中的Sheet,这个表不一定在第一位置,也可能是4、5、6或任意定置。 [此贴子已经被作者于2024/3/12 17:43:33编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2024/3/12 17:20:00 -- Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("基本信息").StopRedraw() Dim nms() As String = {"棋赛名称", "棋赛副名", "编号", "姓名", "身份"}
|
|
-- 作者:采菊东篱下 -- 发布时间:2024/3/12 17:23:00 -- 为什么是Book.Sheets(0),0表示第一个表吧?但我打开的表不一定在第一啊。 |
|
-- 作者:有点蓝 -- 发布时间:2024/3/12 17:24:00 -- 怎么知道要用第几个呢?靠猜的么 |
|
-- 作者:采菊东篱下 -- 发布时间:2024/3/13 21:00:00 -- Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("基本信息").StopRedraw() Dim nms() As String = {"棋赛名称", "棋赛副名", "编号", "姓名", "身份"} Dim i1 As Integer = Array.Indexof(nms, "棋赛名称") Dim i2 As Integer = Array.Indexof(nms, "编号") Dim i3 As Integer = Array.Indexof(nms, "姓名") For n As Integer = 1 To Sheet.Rows.Count - 1 Dim bh1 As String = sheet(n, i1).Text Dim bh2 As Integer = sheet(n, i2).Value Dim bh3 As String = sheet(n, i3).Text Dim dr As DataRow = DataTables("基本信息").SQLFind("[棋赛名称] = \'" & bh1 & "\' And [编号] =" & bh2 & " And [姓名] = \'" & bh3 & "\'") If dr Is Nothing Then \'如果基本信息表不存在同一棋赛名称、编号、姓名的行 dr = DataTables("基本信息").AddNew() End If For m As Integer = 0 To nms.Length - 1 dr(nms(m)) = Sheet(n, m).Value Next Next Tables("基本信息").ResumeRedraw() End If 安这代码导入,出现 excel格式是从Foxtable中以Excel格式导出基本信息表上的数据,删除数据后录入新数据再导入进行测试,结果出现上面的报错。
[此贴子已经被作者于2024/3/14 0:03:18编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2024/3/14 8:39:00 -- For m As Integer = 0 To nms.Length - 1 if Sheet(n, m).text > "" dr(nms(m)) = Sheet(n, m).Value else dr(nms(m)) = nothing end if Next
|
|
-- 作者:采菊东篱下 -- 发布时间:2024/3/14 10:48:00 -- 已经改为: Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("基本信息").StopRedraw() Dim nms() As String = {"棋赛名称", "棋赛副名", "编号", "姓名", "身份"} Dim i1 As Integer = Array.Indexof(nms, "棋赛名称") Dim i2 As Integer = Array.Indexof(nms, "编号") Dim i3 As Integer = Array.Indexof(nms, "姓名") For n As Integer = 1 To Sheet.Rows.Count - 1 Dim bh1 As String = sheet(n, i1).Text Dim bh2 As Integer = sheet(n, i2).Value Dim bh3 As String = sheet(n, i3).Text Dim dr As DataRow = DataTables("基本信息").SQLFind("[棋赛名称] = \'" & bh1 & "\' And [编号] =" & bh2 & " And [姓名] = \'" & bh3 & "\'") If dr Is Nothing Then \'如果不存在同编号的订单 dr = DataTables("基本信息").AddNew() End If For m As Integer = 0 To nms.Length - 1 If Sheet(n, m).text > "" Then dr(nms(m)) = Sheet(n, m).Value Else dr(nms(m)) = Nothing End If Next Next Tables("基本信息").ResumeRedraw() End If 依然是这样 .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2022.8.18.1 错误所在事件:菜单,Excel导入基本信息,Click 详细错误信息: 从字符串“”到类型“Integer”的转换无效。 输入字符串的格式不正确。
|
|
-- 作者:有点蓝 -- 发布时间:2024/3/14 10:58:00 -- 可能是下面的问题,编号是整数列?execl路是不是有编号为空的行? Dim bh1 As String = sheet(n, i1).Text Dim bh2 As Integer = sheet(n, i2).Value Dim bh3 As String = sheet(n, i3).Text Dim dr As DataRow = DataTables("基本信息").SQLFind("[棋赛名称] = \'" & bh1 & "\' And [编号] =" & bh2 & " And [姓名] = \'" & bh3 & "\'") |
|
-- 作者:采菊东篱下 -- 发布时间:2024/3/14 11:04:00 -- 对,编号列是整数形数列,裁判长、副裁判长、裁判员、编排长、仲裁长是不存在编号的,因此为空,只有参赛人才有编号。 |
|
-- 作者:有点蓝 -- 发布时间:2024/3/14 11:21:00 --
|