86 lines
3.4 KiB
VB.net
86 lines
3.4 KiB
VB.net
Imports System.Globalization
|
|
Imports Excel = Microsoft.Office.Interop.Excel
|
|
Public Class Database
|
|
Public Shared database As New DataSet
|
|
|
|
' --- Retrive the Excel database ---
|
|
Public Shared Sub Retrive_Database()
|
|
Dim excelApp As Excel.Application = New Excel.Application
|
|
Dim excelWB As Excel.Workbook
|
|
|
|
' Make .csv files of each sheet in Excel
|
|
excelApp.DisplayAlerts = False
|
|
Dim wSNames As New List(Of String)
|
|
excelWB = excelApp.Workbooks.Open(Settings.HLCtFolder & "\Database\Databas.xlsx")
|
|
|
|
For i = 1 To 5
|
|
Dim activeSheet As Excel.Worksheet
|
|
activeSheet = excelWB.Sheets(i)
|
|
wSNames.Add(activeSheet.Name)
|
|
activeSheet.SaveAs(Settings.HLCtFolder & "\Database\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV)
|
|
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet)
|
|
Next
|
|
excelWB.Close()
|
|
excelApp.Quit()
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB)
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
|
|
|
|
' USe this when all sheets are to be read
|
|
'For Each WS In excelWB.Worksheets
|
|
' WS.SaveAs(GUI_Settings.HLCtFolder & ("\") & WS.Name, Excel.XlFileFormat.xlCSV)
|
|
'Next
|
|
|
|
|
|
' Read all .csv files to local database
|
|
For i = 0 To wSNames.Count - 1
|
|
Dim tempDT As New DataTable With {
|
|
.TableName = wSNames(i)
|
|
}
|
|
|
|
Dim lines = IO.File.ReadAllLines(Settings.HLCtFolder & "\Database\" & wSNames(i) & ".csv")
|
|
|
|
' Create DataTable columns
|
|
Dim words As String() = lines(0).Split(New Char() {","c})
|
|
For j = 0 To words.Count - 1
|
|
Dim colName As String = words(j).Split("[")(0)
|
|
colName = colName.Substring(0, colName.Length - 1)
|
|
Dim type As String = words(j).Split("[")(1).Split("]")(0)
|
|
|
|
If type = "str" Then
|
|
tempDT.Columns.Add(colName, GetType(String))
|
|
ElseIf type = "int" Then
|
|
tempDT.Columns.Add(colName, GetType(Integer))
|
|
ElseIf type = "dbl" Then
|
|
tempDT.Columns.Add(colName, GetType(Double))
|
|
Else
|
|
tempDT.Columns.Add(colName, GetType(Boolean))
|
|
End If
|
|
Next
|
|
|
|
' Fill the DataTable with all data
|
|
For j = 1 To lines.Count - 1
|
|
Dim values As String() = lines(j).Split(New Char() {","c})
|
|
tempDT.Rows.Add()
|
|
For k = 0 To values.Count - 1
|
|
If tempDT.Columns(k).DataType = GetType(Double) Then
|
|
values(k) = CDbl(Val(values(k)))
|
|
End If
|
|
Try
|
|
tempDT.Rows(tempDT.Rows.Count - 1)(k) = values(k)
|
|
Catch ex As Exception
|
|
If values(k) <> "" AndAlso values(k) = 0 Then
|
|
tempDT.Rows(tempDT.Rows.Count - 1)(k) = False
|
|
ElseIf values(k) <> "" AndAlso values(k) = 1 Then
|
|
tempDT.Rows(tempDT.Rows.Count - 1)(k) = True
|
|
End If
|
|
End Try
|
|
Next
|
|
Next
|
|
|
|
' Add DataTable to local database (DataSet)
|
|
database.Tables.Add(tempDT)
|
|
Next
|
|
End Sub
|
|
End Class
|