以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 导入代码报错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=183527) |
-- 作者:weibu -- 发布时间:2022/11/8 16:29:00 -- 导入代码报错 Dim ckl As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1") Dim nms As New List(Of String) For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的列 If ckl.GetItemChecked(i) Then nms.Add(ckl.Items(i)) End If Next If nms.Count = 0 Then MessageBox.Show("至少要选择一列", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Return End If \'生成Excel表 Dim dt As DataTable = DataTables("线索") Dim Result As DialogResult Result = MessageBox.Show("确定要导入吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then Dim dlg As New 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("Sheet1") Dim dic As New Dictionary(Of DataRow, Integer) Dim ls As New List(Of Integer) For c As Integer = 0 To sheet.Cols.Count - 1 If sheet(0, c).Value.replace(" ", "") > "" Then dic.Add(sheet(0, c).Value.replace(" ", ""), c) End If Next For n As Integer = 1 To Sheet.Rows.Count - 1 \' If sheet(n, dic("企业名称")).Text <> "" Then Dim dr As DataRow = dt.Find("企业名称 = \'" & sheet(n, dic("企业名称")).Text & "\'") 保存报错 If dr IsNot Nothing Then For i As Integer = 0 To nms.count - 1 If nms(i) <> "企业名称" Then If nms(i) = "更多电话" Then If dr.IsNull("更多电话") = False Then \'如果工号列不为空 Dim gdh () As String = dr("更多电话").Split(",") \'将工号列内容拆分成数组 Dim gds () As String = Sheet(n, dic("更多电话")).Value.Split(",") For Each gd As String In gds \'遍历EXCL的每个电话 If gdh.Contains(gd.replace(" ", "")) = False Then gdh.add(gd) End If Next dr("更多电话") = String.join(",", gdh.toarray) gdh.clear End If Else dr(nms(i)) = Sheet(n, dic(nms(i))).Value End If End If Next End If \'End If Next End If End If |
-- 作者:有点蓝 -- 发布时间:2022/11/8 17:08:00 -- Dim dic As New Dictionary(Of DataRow, Integer) 改为 Dim dic As New Dictionary(Of string, Integer)
|
-- 作者:weibu -- 发布时间:2022/11/8 17:38:00 -- 蓝老师,我测试了,只要不导入更多电话字段就不报错。我想达到的效果是:如果公司名称相同,把excl中这条更多电话数据,首先查找软件数据是否有重复的电话,如果有不导入,没有就与原来电话数据拼接,并用,号隔开; 更多电话的数据如: 18137847688,(0379)63120755,(0379)6312722,(0379)63120711,(0379)63120722 报错如下: If nms(i) = "更多电话" Then If dr.IsNull("更多电话") = False Then \'如果工号列不为空 Dim gdh As List(Of String) = dr("更多电话").Split(",") \'将工号列内容拆分成数组 Dim gds () As String = Sheet(n, dic("更多电话")).Value.Split(",") For Each gd As String In gds \'遍历EXCL的每个电话 If gdh.Contains(gd.replace(" ", "")) = False Then gdh.add(gd) End If Next dr("更多电话") = String.join(",", gdh.toarray) gdh.clear End If
|
-- 作者:有点蓝 -- 发布时间:2022/11/8 17:49:00 -- Dim gdh As List(Of String) = dr("更多电话").Split(",") \'将工号列内容拆分成数组 改为 Dim gdh As new List(Of String) \'将工号列内容拆分成数组 gdh .addrange(dr("更多电话").Split(","))
|