You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.7 KiB
198 lines
6.7 KiB
Imports System.IO
|
|
Imports XLSLib
|
|
|
|
Friend Module TVToExcel
|
|
|
|
Dim level As Integer = 0
|
|
Dim ExcelData As New DataTable
|
|
Dim Leveldata() As String
|
|
Dim xls As New XLSLib.clsXLSLib
|
|
|
|
Sub Addrow_v(ByVal level As Integer, Optional ByVal Typ As String = "")
|
|
Dim dr As DataRow
|
|
dr = ExcelData.NewRow
|
|
For i As Integer = 0 To level
|
|
dr.Item(i) = Leveldata(i)
|
|
Next
|
|
ExcelData.Rows.Add(dr)
|
|
End Sub
|
|
Sub Addrow(ByVal level As Integer, Optional ByVal Typ As String = "")
|
|
Dim dr As DataRow
|
|
dr = ExcelData.NewRow
|
|
dr.Item(0) = Typ
|
|
For i As Integer = 0 To level
|
|
dr.Item(i + 1) = Leveldata(i)
|
|
Next
|
|
ExcelData.Rows.Add(dr)
|
|
End Sub
|
|
|
|
Sub Export_Vertragselemente(ByVal tv As TreeView, ByVal filename As String)
|
|
Dim s As String = " ; ; ; ; ; ; ; ; ; ;"
|
|
Leveldata = s.Split(";")
|
|
ExcelData.Rows.Clear()
|
|
ExcelData.Columns.Clear()
|
|
ExcelData.Columns.Add("Element1")
|
|
ExcelData.Columns.Add("Element2")
|
|
ExcelData.Columns.Add("Element3")
|
|
ExcelData.Columns.Add("Element4")
|
|
ExcelData.Columns.Add("Element5")
|
|
ExcelData.Columns.Add("Element6")
|
|
ExcelData.Columns.Add("Element7")
|
|
ExcelData.Columns.Add("Element8")
|
|
|
|
For Each xx As TreeNode In tv.Nodes
|
|
level = 0
|
|
Leveldata(level) = xx.Text
|
|
Addrow_v(level)
|
|
treedown(xx)
|
|
s = " ; ; ; ; ; ; ; ; ; ;"
|
|
Leveldata = s.Split(";")
|
|
Next
|
|
level = 0
|
|
Leveldata(level) = ""
|
|
Addrow(level)
|
|
Leveldata(level) = "Legende:"
|
|
Addrow(level)
|
|
Leveldata(level) = "***... = Inaktives Element"
|
|
Addrow(level)
|
|
|
|
xls.Write_Excel(ExcelData, True)
|
|
'DatatableToExcel(ExcelData, filename)
|
|
End Sub
|
|
Sub treedown(ByVal xx As TreeNode)
|
|
For Each xy As TreeNode In xx.Nodes
|
|
level = level + 1
|
|
Dim fnt As Font = xy.NodeFont
|
|
|
|
If fnt.Strikeout = True Then Leveldata(level) = "*** " + xy.Text Else Leveldata(level) = xy.Text
|
|
If Not xy.ImageIndex = 9 Then
|
|
Addrow_v(level, "")
|
|
End If
|
|
treedown(xy)
|
|
level = level - 1
|
|
Next
|
|
End Sub
|
|
|
|
Sub Export_Applikationen(ByVal tv As TreeView, ByVal filename As String)
|
|
Dim s As String = " ; ; ; ; ; ; ; ; ; ;"
|
|
Leveldata = s.Split(";")
|
|
ExcelData.Rows.Clear()
|
|
ExcelData.Columns.Clear()
|
|
ExcelData.Columns.Add("Typ")
|
|
ExcelData.Columns.Add("Element1")
|
|
ExcelData.Columns.Add("Element2")
|
|
ExcelData.Columns.Add("Element3")
|
|
ExcelData.Columns.Add("Element4")
|
|
ExcelData.Columns.Add("Element5")
|
|
ExcelData.Columns.Add("Element6")
|
|
ExcelData.Columns.Add("Element7")
|
|
ExcelData.Columns.Add("Element8")
|
|
|
|
For Each xx As TreeNode In tv.Nodes
|
|
level = 0
|
|
' Leveldata(level) = xx.Text
|
|
If xx.ImageIndex = 2 Or xx.ImageIndex = 4 Or xx.ImageIndex = 6 Then Leveldata(level) = "*** " + xx.Text Else Leveldata(level) = xx.Text
|
|
If xx.ImageIndex = 1 Then Addrow(level, "")
|
|
If xx.ImageIndex = 3 Then Addrow(level, "L")
|
|
If xx.ImageIndex = 5 Then Addrow(level, "S")
|
|
If xx.ImageIndex = 2 Then Addrow(level, "")
|
|
If xx.ImageIndex = 4 Then Addrow(level, "L")
|
|
If xx.ImageIndex = 6 Then Addrow(level, "S")
|
|
treedown1(xx)
|
|
s = " ; ; ; ; ; ; ; ; ; ;"
|
|
Leveldata = s.Split(";")
|
|
Next
|
|
level = 0
|
|
Leveldata(level) = ""
|
|
Addrow(level)
|
|
Leveldata(level) = "Legende:"
|
|
Addrow(level)
|
|
Leveldata(level) = "***... = Inaktives Element"
|
|
Addrow(level)
|
|
Leveldata(level) = "Typ '' = Applikation/Modul"
|
|
Addrow(level)
|
|
Leveldata(level) = "Typ 'L' = Lizenzelement"
|
|
Addrow(level)
|
|
Leveldata(level) = "Typ 'S' = Strukturelement"
|
|
Addrow(level)
|
|
xls.Write_Excel(ExcelData, True)
|
|
' DatatableToExcel(ExcelData, filename)
|
|
|
|
End Sub
|
|
Sub treedown1(ByVal xx As TreeNode)
|
|
For Each xy As TreeNode In xx.Nodes
|
|
level = level + 1
|
|
Dim fnt As Font = xy.NodeFont
|
|
If xy.ImageIndex = 2 Or xy.ImageIndex = 4 Or xy.ImageIndex = 6 Then Leveldata(level) = "*** " + xy.Text Else Leveldata(level) = xy.Text
|
|
If xy.ImageIndex = 1 Then Addrow(level, "")
|
|
If xy.ImageIndex = 3 Then Addrow(level, "L")
|
|
If xy.ImageIndex = 5 Then Addrow(level, "S")
|
|
If xy.ImageIndex = 2 Then Addrow(level, "")
|
|
If xy.ImageIndex = 4 Then Addrow(level, "L")
|
|
If xy.ImageIndex = 6 Then Addrow(level, "S")
|
|
treedown1(xy)
|
|
level = level - 1
|
|
Next
|
|
End Sub
|
|
|
|
|
|
Function DatatableToExcel(ByVal aDataTable As DataTable, ByVal aOutputFilename As String) As Boolean
|
|
Application.DoEvents()
|
|
Dim f As New FrmFortschritt
|
|
Dim app As New Object
|
|
Dim wb As New Object
|
|
Dim ws As New Object
|
|
Try
|
|
f.Show()
|
|
Application.DoEvents()
|
|
f.ProgressBar1.Minimum = 0
|
|
f.ProgressBar1.Maximum = aDataTable.Rows.Count
|
|
f.ProgressBar1.Step = 1
|
|
app = CreateObject("Excel.application")
|
|
'Dim wb As Object
|
|
'Dim ws As Object
|
|
' Dim app As New Excel.ApplicationClass
|
|
' Dim wb As Excel.Workbook
|
|
' Dim ws As Excel.Worksheet
|
|
wb = app.Workbooks.add()
|
|
'wb = app.Workbooks.Add()
|
|
ws = wb.ActiveSheet()
|
|
Dim dc As DataColumn
|
|
Dim dr As DataRow
|
|
Dim colIndex As Integer
|
|
Dim rowIndex As Integer
|
|
' Columns erstellen
|
|
For Each dc In aDataTable.Columns
|
|
colIndex += 1
|
|
app.Cells(1, colIndex) = dc.ColumnName
|
|
Next
|
|
For Each dr In aDataTable.Rows
|
|
f.ProgressBar1.PerformStep()
|
|
rowIndex += 1
|
|
colIndex = 0
|
|
For Each dc In aDataTable.Columns
|
|
colIndex += 1
|
|
app.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
|
|
Next
|
|
Next
|
|
ws.Columns.AutoFit()
|
|
wb.SaveAs(aOutputFilename)
|
|
app.Workbooks.Open(aOutputFilename)
|
|
' Excel anzeigen wenn fertig exportiert
|
|
app.Visible = True
|
|
ws = Nothing
|
|
wb = Nothing
|
|
app = Nothing
|
|
|
|
f.Close()
|
|
Return True
|
|
Catch ex As Exception
|
|
f.Close()
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
|
|
End Function
|
|
End Module
|
|
|