Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode=trv.selectedNode
Dim str As String
Dim j As Integer
str=nd.Level
If str<>"1" Then
Return
End If '===========当双击的是第一级的时候,才调Excel.
Dim pth As String="d:\出图\" & nd.ParentNode.name ' & nd.Name
Dim tbl As Table=Tables("excel")
'messagebox.show(1)
Dim dr As DataRow ' ======找出字符串,根据Excel的列名称,改变表的列名称.
dr=DataTables("文档注册表").Find("[文档名称] = '" & nd.ParentNode.name & "' And [sheet]='" & nd.name & "'") ' ====找出列名称数组,狐表中的文档注册表中,每个标准的行的键值,是需要显示的列名称 数组
Dim i As Integer
i=Tables("文档注册表").findrow(dr)
Dim sp As String=Tables("文档注册表").Rows(i)("键值")
Dim sz() As String=sp.split("|")
Dim va=Functions.Execute("ExcelToArry",pth,nd.name)
Dim Endrow As Integer=ubound(va,1)
Dim Endcol As Integer=ubound(va,2)
messagebox.show("endrow=" & Endrow & " endcol=" & Endcol )
Functions.Execute("Delete_Allcols","excel")
messagebox.show("tbl.Cols.count= " & tbl.Cols.count)
If tbl.Rows.count<Endrow Then
Syscmd.Row.AddNews(Endrow-tbl.Rows.count)
End If
With DataTables("excel")
For j=1 To sz.length
If va(1,sz(j-1)) <>"" Then
.DataCols.Add( "列" & j ,Gettype(String),250,"",va(1,sz(j-1)))
messagebox.show("列标题=" & .datacols("列" & j).caption & " va(1,sz(j-1))=" & va(1,sz(j-1)))
DataTables.Unload("excel")
DataTables.load("excel")
For i=2 To Endrow
.dataRows(i-2)("列" & j).value=va(i,j)
Next
End If
Next
End With
messagebox.show(2)
With Tables("标准管理_Table1")
.MergeMode = MergeModeEnum.Standard '标准合并模式
.MergeCols.Clear() '清除原来的合并列
.MergeCols.Add(tbl.Cols(0).name) '加入要合并的列
.MergeCols.Add(tbl.Cols(1).name) '加入要合并的列
.MergeCols.Add(tbl.Cols(2).name) '加入要合并的
' .MergeSort = tbl.Cols(0).name & "," & tbl.Cols(1).name & "," & tbl.Cols(2).name '设置合并模式下的排序方式
.AllowMerge = True '启用合并模式
End With
---------------------------------------------------------------------
我编写的自定义函数 Delete_Allcols 代码如下:
Dim tblname As String=args(0)
DataTables.Unload(tblname)
DataTables.load(tblname)
Dim j As Integer
Dim Builder As New ADOXBuilder
Builder.Open() '打开ADOXBuilder
With Builder.Tables(tblname)
For Each c As Col In Tables(tblname).Cols
.DeleteColumn(c.name)
j=j+1
Next
End With
Builder.Close() '关闭ADOXBuilder
DataTables.Unload(tblname)
DataTables.load(tblname)
Return j
'=======删除所有列 tblname是表名称.