進口系統。超正析象管(Image Orthicon)
進口系統。數據
進口系統。Data.OleDb
Public必須繼承類ExcelHelper
私有共享函數buildConnStr(excelFilePath As String)作為字符串
Dim excelFileInfo作為新系統。IO.FileInfo(excelFilePath)
Dim構造為字符串
如果excelFileInfo。擴展= "。xlsx”那麽
constr = String。Format("Provider=Microsoft。ACE . oledb . 12.0;數據源= { 0 };擴展屬性= ' Excel 12.0 Xml;HDR =是;IMEX=1 ' ",excelFilePath)
其他
constr = String。Format("Provider=Microsoft。Jet . OLEDB.4.0數據源= { 0 };擴展屬性= ' Excel 8.0HDR =是;IMEX=1 ' ",excelFilePath)
如果…就會結束
返回構造
結束功能
將數據表導入excel。
作為布爾值的公共共享函數DataTable2Excel(dt作為DataTable,excelFilePath作為String)
如果文件。存在(excelFilePath)
Thrownnewexception("該文件已經存在!")
如果…就會結束
如果dt。TableName.Trim.Length = 0或dt。TableName.ToLower = "table "然後
dt。TableName = "Sheet1 "
如果…就會結束
Dim colCount為Integer = dt。列數
Dim pa(colCount - 1)作為OleDb。OleDbParameter
dim tableStructStr As String = " Create Table " & amp;dt。表名& amp"("
dim connString As String = buildConnStr(excelFilePath)
Dim objconn作為新的OleDbConnection(connString)
Dim objcmd作為新OleDbCommand
objcmd。連接= objconn
Dim數據類型列表作為新的數組列表
數據類型列表。添加("系統。十進制”)
數據類型列表。添加("系統。雙倍”)
數據類型列表。添加("系統。Int16”)
數據類型列表。添加("系統。Int32”)
數據類型列表。添加("系統。Int64”)
數據類型列表。添加("系統。單身”)
Dim i為整數= 0
作為dt中的DataColumn。列
如果數據類型列表。IndexOf(col.GetType.ToString)>那麽0
pa(I)= New oledb parameter(" @ " & amp;col.ColumnName,OleDbType。雙倍)
objcmd。參數. Add(pa(i))
如果i + 1 = colCount,則
tableStructStr+= col . column name+" double)"
其他
tableStructStr+= col . column name+" double,"
如果…就會結束
其他
pa(I)= New oledb parameter(" @ " & amp;col.ColumnName,OleDbType。VarChar)
objcmd。參數. Add(pa(i))
如果i + 1 = colCount,則
tableStructStr+= col . column name+" VarChar)"
其他
tableStructStr+= col . column name+" VarChar,"
如果…就會結束
如果…就會結束
i += 1
然後
嘗試
objcmd。CommandText = tableStructStr
如果objconn。狀態=連接狀態。關閉然後關閉。打開()
objcmd。ExecuteNonQuery()
將ex作為異常捕獲
扔ex
結束嘗試
dim Insert SQL _ 1 As String = " Insert into "+dt。TableName +"("
Dim InsertSql_2 As String = " Values("
Dim InsertSql As String = " "
對於colID As Integer = 0到colCount - 1步驟1
如果colID + 1 = colCount,則
InsertSql_1 += dt。列(colID)。列名& amp")"
InsertSql_2 += "@" + dt。列(colID)。列名+" "
其他
InsertSql_1 += dt。列(colID)。列名+","
InsertSql_2 += "@" + dt。列(colID)。列名+","
如果…就會結束
然後
insert SQL = insert SQL _ 1+insert SQL _ 2
For rowID為Integer = 0到dt。行數.計數- 1步1
對於colID = 0至dt。列數- 1
如果pa(大腸桿菌)。DbType = DbType。Double和dt。rows(rowID)(colID). tostring . trim = " "然後
pa(大腸桿菌)。值= 0
其他
pa(大腸桿菌)。值= dt。rows(rowID)(colID). tostring . trim
如果…就會結束
然後
嘗試
objcmd。CommandText = InsertSql
objcmd。ExecuteNonQuery()
將ex作為異常捕獲
扔ex
結束嘗試
然後
嘗試
如果objconn。狀態=連接狀態。然後打開objconn。關閉()
將exp作為異常捕獲
投擲經驗
結束嘗試
返回True
結束功能
獲取Excel文件數據表列表
公共共享函數GetExcelTables(ExcelFileName作為String)作為ArrayList
將工作表調成新列表(字符串)
連接打開()
dim dt As DataTable = conn . GetOleDbSchemaTable(OleDbSchemaGuid。表格,無)
對於dt中的每個r。行
床單。Add(r("表名"))
然後
連接關閉()
退貨單
Dim dt作為數據表
如果不是文件。存在(ExcelFileName)則
Thrownnewexception("指定的Excel文件不存在")
不返回任何內容
如果…就會結束
Dim tableList作為新的數組列表
使用conn作為oledb connection = New oledb connection(buildConnStr(excel filename))
嘗試
連接打開()
dt = conn . GetOleDbSchemaTable(OleDbSchemaGuid。Tables,New Object(){無,無,無," TABLE"})
將ex作為異常捕獲
扔ex
結束嘗試
對於I為整數= 0到dt。行數。計數- 1
Dim tableName為String = dt。rows(I)(2). tostring . trim . trimend(" $ ")
If表列表。index of(tableName)& lt;0然後是表列表。添加(表名)
然後
結束使用
返回表列表
結束功能
將Excel文件導出到數據表(第壹行用作標題)
公共共享函數InputFromExcel(ExcelFileName作為字符串,TableName作為字符串)作為數據表
如果不是文件。存在(ExcelFileName)則
Thrownnewexception("指定的Excel文件不存在")
如果…就會結束
dim table list As ArrayList = get excel tables(excel filename)
If表列表。index of(TableName)& lt;那麽0
TableName = table list(0). tostring . trim
如果…就會結束
Dim dt作為新數據表
Dim conn作為新oledb connection(buildConnStr(excel filename))
dim cmd As New oledb command(" select * from[" & amp;表名& amp" $]",conn)'調試需要$?
Dim適配器作為新的OleDbDataAdapter(cmd)
嘗試
If conn.State = ConnectionState。關閉,然後連接打開()
適配器。填充(dt)
將ex作為異常捕獲
扔ex
最後
If conn.State = ConnectionState。打開,然後連接。關閉()
結束嘗試
返回dt
結束功能
查詢excel文件中的數據
公共共享函數ReadOneDataFromExcel(excel filename為字符串,TableName為字符串,sql為字符串)作為對象
如果不是文件。存在(ExcelFileName)則
Thrownnewexception("指定的Excel文件不存在")
如果…就會結束
dim table list As ArrayList = get excel tables(excel filename)
If表列表。index of(TableName)& lt;那麽0
TableName = table list(0). tostring . trim
如果…就會結束
Dim dt作為新數據表
Dim conn作為新oledb connection(buildConnStr(excel filename))
Dimcmd as new ole command (SQL,conn)'調試需要$嗎?
Dim ret作為對象
嘗試
If conn.State = ConnectionState。關閉,然後連接打開()
ret = cmd。ExecuteScalar()
將ex作為異常捕獲
扔ex
最後
If conn.State = ConnectionState。打開,然後連接。關閉()
結束嘗試
返回ret
結束功能
獲取Excel文件中指定數據表的數據列表列名。
公共共享函數GetExcelTableColumns(excel filename作為字符串,TableName作為字符串)作為ArrayList
Dim dt作為數據表
如果不是文件。存在(ExcelFileName)則
Thrownnewexception("指定的Excel文件不存在")
不返回任何內容
如果…就會結束
Dim ColList作為新的數組列表
使用conn作為oledb connection = New oledb connection(buildConnStr(excel filename))
嘗試
連接打開()
dt = conn . GetOleDbSchemaTable(OleDbSchemaGuid。Columns,New Object() {Nothing,Nothing,TableName,Nothing})
將ex作為異常捕獲
扔ex
結束嘗試
對於I為整數= 0到dt。行數。計數- 1
Dim ColName = dt。行(I)(“列名”)。ToString()。修剪()
科利斯特。添加(列名)
然後
結束使用
返回碰撞列表
結束功能
結束類