cudreg-saml2/App_Code/Shared/Parser.vb
2025-06-08 16:22:20 +07:00

85 lines
2.9 KiB
VB.net

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Text
Imports System.IO
Namespace Persons.UI
''' <summary>
''' Summary description for Parser: Parser for files like csv, excel etc.
''' </summary>
Public MustInherit Class Parser
' The type of file. ie, extension of the file.
Public Enum FileTypes
CSV
XLS
XLSX
MDB
ACCDB
TAB
End Enum
' Constructor
Public Sub New()
MyBase.New
End Sub
' Reset resources
Public MustOverride Sub Reset()
' Get one record at a time
Public MustOverride Function GetNextRow() As String()
'Close parser and dispose parser object
Public MustOverride Sub Close()
' Generic function to get instance of parser class based on file type.
Public Shared Function GetParser(ByVal filePath As String, ByVal type As FileTypes) As Parser
Dim parsr As Parser = Nothing
Select Case (type)
Case FileTypes.CSV
parsr = New CsvParser(filePath, System.Globalization.CultureInfo.CurrentUICulture.TextInfo.ListSeparator(0))
Case FileTypes.TAB
parsr = New CsvParser(filePath, vbTab)
Case FileTypes.XLS
Try
parsr = New ExcelParser(filePath, HttpContext.Current.Session("SheetName").ToString())
Catch e As Exception
Throw New Exception(e.Message)
End Try
Case FileTypes.XLSX
Try
parsr = New ExcelParser(filePath, HttpContext.Current.Session("SheetName").ToString())
Catch e As Exception
Throw New Exception(e.Message)
End Try
Case FileTypes.MDB
Try
parsr = New AccessParser(filePath, HttpContext.Current.Session("TableName").ToString())
Catch e As Exception
Throw New Exception(e.Message)
End Try
Exit Select
Case FileTypes.ACCDB
Try
parsr = New AccessParser(filePath, HttpContext.Current.Session("TableName").ToString())
Catch e As Exception
Throw New Exception(e.Message)
End Try
Exit Select
End Select
Return parsr
End Function
End Class
End Namespace