以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 合并表 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87565) |
-- 作者:刘林 -- 发布时间:2016/7/13 17:36:00 -- 合并表 Dim Book As New XLS.Book("d:\\test.xls") Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("成绩").StopRedraw() Dim nms() As String = {"年级","类别","学校","学校班级","考号","姓名"} For n As Integer = 1 To Sheet.Rows.Count -1 Dim bh As String = sheet(n,0).Text Dim dr As DataRow = DataTables("成绩").Find("考号 = \'" & bh & "\'") 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() 1\我想把test.xls并入成绩表,要实现如相同考号行值未变的时行跳过,如考号相同行有改变(如姓名),如text有增加行则成表也增加行 2\我想不指定xls,而是用文件对话打开怎么改 请求帮助一个初学者,谢谢
|
-- 作者:大红袍 -- 发布时间:2016/7/13 18:17:00 -- Dim dlg As new OpenFileDialog dlg.Filter = "Excel|*.xls;*.xlsx" If dlg.ShowDialog = DialogResult.OK Then Dim Book As New XLS.Book("d:\\test.xls") Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("成绩").StopRedraw() Dim nms() As String = {"年级","类别","学校","学校班级","考号","姓名"} For n As Integer = 1 To Sheet.Rows.Count -1 Dim bh As String = sheet(n,4).Text Dim dr As DataRow = DataTables("成绩").Find("考号 = \'" & bh & "\' and 姓名 = \'" & sheet(n,5).Text & "\'") 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 |
-- 作者:刘林 -- 发布时间:2016/7/13 20:53:00 -- 很感谢指导,但该代码实现了跳过EXCL表中未改的行,但如果关键列如考号未变,但姓名变了也插入了新行,我是想如果关键值考号不变时其他值变了只做修改,另第四行 Dim Book As New XLS.Book("d:\\test.xls")如何改?谢谢! |
-- 作者:刘林 -- 发布时间:2016/7/13 20:56:00 -- 关键列不变其他列变了,则覆盖;关键列变了则新增;各列不变的行则跳过 |
-- 作者:大红袍 -- 发布时间:2016/7/14 1:51:00 -- Dim dlg As new OpenFileDialog
dlg.Filter = "Excel|*.xls;*.xlsx" 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 = {"年级","类别","学校","学校班级","考号","姓名"} For n As Integer = 1 To Sheet.Rows.Count -1 Dim bh As String = sheet(n,4).Text Dim dr As DataRow = DataTables("成绩").Find("考号 = \'" & bh & "\'") 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 |
-- 作者:刘林 -- 发布时间:2016/7/14 8:20:00 -- 太谢谢红袍兄了,你给f我解决了很想达到的结果,谢放帮助,让我一个初学者很快爱了这狐狸精 |