以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请甜大师帮忙  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53966)

--  作者:hbhb
--  发布时间:2014/7/18 19:32:00
--  请甜大师帮忙
甜大师:请帮忙!

我想把科目余额表写入到内部表科目余额表里如何写高效率代码?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目15.zip


--  作者:有点甜
--  发布时间:2014/7/18 19:45:00
--  

代码

 

Connections.Add("test", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & "科目余额表.xls;Extended Properties=Excel 8.0;")
Dim cmd As New SQLCommand
cmd.ConnectionName = "test"
cmd.CommandText = "select * from [科目余额表$]"
Dim dt As DataTable = cmd.ExecuteReader
DataTables("科目余额表").StopRedraw
For Each dr As DataRow In dt.DataRows
    Dim ndr As DataRow = DataTables("科目余额表").AddNew
    ndr("第一列") = dr("科目名称")
    ndr("第二列") = dr("方向")
    ndr("第三列") = dr("账面期初余额")
Next
DataTables("科目余额表").ResumeRedraw
Connections.Delete("test")

[此贴子已经被作者于2014-7-18 19:46:07编辑过]

--  作者:hbhb
--  发布时间:2014/7/18 20:02:00
--  
谢谢!
现在的问题是:
1、不知道具体的excel表有多少列数及列名
2、可作为列名字段的单元格上方有可能有空行

如何也能做到?

--  作者:有点甜
--  发布时间:2014/7/18 20:10:00
--  

参考改一下即可。

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "科目余额表.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.UsedRange
Dim ary = rg.value
DataTables("科目余额表").StopRedraw
For i As Integer = 1 To rg.Rows.count
    \'For j As Integer = 1 To rg.Columns.count
   Dim ndr As DataRow = DataTables("科目余额表").AddNew
        ndr("第一列") = ary(i,1)
        ndr("第二列") = ary(i,2)
        ndr("第三列") = ary(i,3)
    \'Next
Next
DataTables("科目余额表").ResumeRedraw

[此贴子已经被作者于2014-7-18 20:11:11编辑过]

--  作者:hbhb
--  发布时间:2014/7/18 22:14:00
--  
不得不佩服!
Dim ary  为何不须用as,   何种情况下可以这样用?

--  作者:有点甜
--  发布时间:2014/7/18 22:15:00
--  
 不用as的时候,默认是object