當前位置:首頁 » 編程語言 » vb中excel導入sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vb中excel導入sql

發布時間: 2022-03-09 07:50:44

『壹』 使用VB將excel導入sql

EXCEL文件要設置固定格式,還要設置命名范圍,然後才可以導入
大致思路如下:
'// 設置打開 EXCEL 文件的連接字元串
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=excel文件名;Extended Properties=Excel 8.0"

'// 以記錄集的形式打開 Excel 文件,adoConn 為 ADODB.Connection 對象
adoConn.Open strConn
'// 將數據插入到指定的表中(以ODBC的方式打開SQL資料庫
strSQL = "INSERT INTO [odbc;Driver={SQL Server};Server=伺服器IP;Database=資料庫;UID=用戶名;PWD=密碼].SQL中的表名 SELECT EXCEL中的欄位 FROM EXCEL工作表名"
'// 執行導入語句
adoConn.Execute strSQL, , adExecuteNoRecords

『貳』 怎樣用vb打開excel表,並將excel中的項插入到sql的對應表中

用EXCEL對象讀取EXCEL文件中數據.然後通過ADODB連接SQL進和導入
下面是EXCEL對象的詳解

1 前言

做為一種簡捷、系統的 Windows應用程序開發工具,VB具有強大的數據處理功能,提供了多種數據訪問方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多種資料庫,被廣泛應用於建立各種信息管理系統。但是,VB缺乏足夠的、符合中文習慣的數據表格輸出功能,雖然使用Crystal Report控制項及 Crystal Reports程序可以輸出報表,但操作起來比較麻煩,中文處理能力也不理想。Excel在表格方面有著強大的功能,我們可以用VB編寫直接控制Excel操作的程序,方法是用VB的OLE自動化技術獲取Excel的控制句柄,從而直接控制Excel的一系列操作。本文結合自己的實踐和體會,談談如何在VB6.0應用程序中調用Exce12000,供大家參考。

2 Excel對象模型

為了在VB應用程序中調用Excel,必須要了解Excel對象模型。Excel對象模型描述了Excel的理論結構,所提供的對象很多,涉及VB調用Excel時最可能用到的對象有:
http://www.deepcast.net/wiki/ow.asp?p=Excel%B6%D4%CF%F3%C4%A3%D0%CD&a=print

3 調用Excel

在VB應用程序中調用Excel,實質是將Excel作為一個外部對象來引用,由Excel對象模型提供能從VB應用程序內部來程序化操縱的對象以及相關的屬性、方法和事件。

3.1 在VB工程中添加對Excel類型庫的引用

為了能從VB應用程序中訪問Excel豐富的內部資源,使Excel應用程序運行得更快,需要在VB工程中添加對Excel類型庫的引用。具體步驟如下:

1) 在VB應用程序中調用Excel,你的計算機系統中必須安裝Excel。從VB5「工程」菜單中選擇「引用」;

2) 在「引用」對話框中選擇Excel類型庫:"Microsoft Excel9.0 Object Library";

3) 單擊左邊小方框,使之出現「√」符號;

4) 按「確定」退出。

3.2 引用Application對象

Application對象是Excel對象模型的頂層,表示整個Excel應用程序。在VB應用程序中調用Excel,就是使用Application對象的屬性、方法和事件。為此,首先要聲明對象變數:

Dim VBExcel As Object

或直接聲明為Excel對象:

Dim VBExcel As Excel.Application

在聲明對象變數之後,可用CreateObject函數或GetObject函數給變數賦值新的或已存在的Application對象引用。

1)用CreateObject函數生成新的對象引用:

Set VBExcel=CreateObject ("Excel.Application")

字元串「Excel.Application」是提供Excel應用程序的編程ID,這個變數引用Excel應用程序本身。

2)用GetO場ect函數打開已存在的對象引用:

Set AppExcel=GetObject("Temp.XLS")

上面語句打開文件Temp.XLS。

3)Application對象常用的屬性、方法

Visible屬性取True或False,表明Excel應用程序是否可見。

Left,Top屬性Excel窗口的位置;

Height, Width屬性Excel窗口的大小;

WindowState屬性指定窗口的狀態;

Quit方法,退出Microsoft Excel;

Calculate方法,重新計算所有打開的工作簿、工作表或單元格。

Evaluate方法,求值數學表達式並返回結果。

3.3 使用Excel應用程序

下面分類給出其中常用的屬性和方法。

1)使用工作薄

Workbook對象代表Excel應用程序中當前打開的一個工作簿,包含在Workbooks集合中。可以通過Workbooks集合或表示當前活動工作簿的Active Workbook對象訪問Workbook對象。

常用的方法有:

Add方法:創建新的空白工作簿,並將其添加到集合中。

Open方法:打開工作簿。

Activate方法:激活工作簿,使指定工作簿變為活動工作簿,以便作為Active Workbook對象使用。

Save方法:按當前路徑和名稱保存現有工作簿(如是首次保存,則將其保存到預設名稱中,如BOOK1.XLS)。

SaveAs方法:首次保存工作簿或用另一名稱保存工作簿。

Close方法:關閉工作簿。

PrintOut方法:列印工作簿,語法為:

PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)

可選參數:

From:列印的起始頁號,如省略將從起始位置開始列印。

To:列印的終止頁號,如省略將列印至最後一頁。

Copies:要列印的份數,如省略將只列印一份。

Preview:如果為True則Excel列印指定對象之前進行列印預覽。如果為False或省略則立即列印該對象。

Printer:設置活動列印機的名稱。

ToFile:如果為True則列印輸出到文件。

Collate:如果為True則逐份列印每份副本。

下面語句將活動工作簿的2到5頁列印3份:

ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3

2)使用工作表

Sheets集合表示工作簿中所有的工作表。可以通過Sheets集合來訪問、激活、增加、更名和刪除工作表。一個Worksheet對象代表一個工作表。

常用的屬性、方法有:

Worksheets屬性:返回Sheets集合。

Name屬性:工作表更名。

Add方法:創建新工作表並將其添加到工作簿中。

Select方法:選擇工作表。

Copy方法:復制工作表。

Move方法:將指定工作表移到工作簿的另一位置。

Delete方法:刪除指定工作表。

PrintOut方法:列印工作表。

示例:將C盤工作簿中的工作表復制到A盤工作簿中:

Dim VBExcel As Excel.Application

Set VBExcel=CreateObject("Excel.Application")

With VBExcel

Workbooks.Open "C:\Temp\Ex1.XLS"

Workbooks.Open"A:\Ex2.XLS"

Workbooks("Ex1.XLS").Sheets ("Sales").Copy

Workbooks("Ex2.XLS")

Workbooks("Ex2.XLS").Save

Workbooks("Ex1.XLS").Close

Workbooks("Ex2.XLS").Close

Quit

End With

3)使用單元范圍

Range對象代表工作表的某一單元格、某一行、某一列、某一選定區域或者某一三維區域。

常用的屬性、方法有:

Range屬性:Range (arg)其中arg為A1樣式符號,表示單個單元格或單元格區域。

Cells屬性:Cells (row, col )(其中row為行號,col為列號)表示單個單元格。

ColumnWidth屬性:指定區域中所有列的列寬。

Rowl3eight屬性:指定區域中所有行的行寬。

Value屬性:指定區域中所有單元格的值(預設屬性)。

Formula屬性:指定單元格的公式,由A1--樣式引用。

Select方法:選擇范圍。

Copy方法:將范圍的內容復制到剪貼板。

C1earContents方法:清除范圍的內容。

Delete方法:刪除指定單元范圍。

4)使用圖表

Chart對象代表工作簿中的圖表。該圖表既可為嵌人式圖表(包含於ChartObject對象中)也可為分立的圖表工作表。

常用方法有:

Add方法:新建圖表工作表,返回Chart對象。

PrineOut方法:列印圖表。

ChartWizard方法:修改給定圖表的屬性,其語法為:

ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)

其中:

Source:包含新圖表的源數據的區域。如省略,將修改活動圖表工作表或活動工作表中處於選定狀態的嵌人式圖表。

Gallery:圖表類型,其值可為下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13Dbar,x13DColumn, x13DLine, x13Dpie,x13 Dsurface,xlDoughnut或xlDefaultAutoFormat。

Format:內置自動套用格式的編號。如省略,將選擇默認值。

P1otBy:指定系列中的數據是來自行(xlRows)還是列(xlColumns)。

CategoryLabels:表示包含分類標志的源區域內行數或列數的整數。

SeriesLabels:表示包含系列標志的源區域內行數或列數的整數。

HasLegend:若指定True,則圖表將具有圖例。

Title:圖表標題文字。

CategoryTitle:分類軸標題文字。

ValueTitle:數值軸標題文字。

ExtraTitle:三維圖表的系列軸標題,或二維圖表的第二數值軸標題。

可組合使用Add方法和ChartWizard方法,以創建包含工作表中數據的圖表工作表。下例基於工作表「Sheetl」中單元格區域「A1:A20」中的數據生成新的折線圖並列印。

With Charts.Add

ChartWizard source:=Worksheets ("sheet1").Range_

("a1:a20"),gallery:=xlLine, title:=「折線圖表」

Printout

End With

5)使用Excel工作表函數

在VB語句中可使用大部分的Excel工作表函數,可通過WorksheetFunction對象調用Excel工作表函數。下面的Sub過程用Min工作表函數求出指定區域中單元格的最小值,並通過消息框顯示結果值。

Sub UserFunction()

Dim myRange As Range

Set myRange=Worksheets ("Sheet1").Range("B2:F10")

answer=Application.WorksheetFunction.Min(myRange)

MsgBox answer

End Sub

如果使用以區域引用為參數的工作表函數,必須指定一個Range對象。如可用Match工作表函數對A1:A10區域的所有單元格進行搜索。

Sub FindFirst()

myVar=Application.WorksheetFunction.Match_

(9,orksheets( 1).Range("A1:A10"),0)

MsgBox myVar

End Sub

要在單元格中插人工作表函數,可將該函數指定為對應於Range對象的Formula屬性值。在以下示例中,將當前工作簿Sheetl內A1:B3區域的Formula屬性指定為RAND工作表函數(此函數產生二個隨機數)。

Sub InsertFormula()

Worksheets ("Sheet1" ).Range("A1:B3").Formula="RAND()"

End Sub

以上簡要介紹了Excel對象模型中部分對象及其屬性和方法,更詳細的信息可參閱Excel 2000幫助中的「Microsoft Excel Visual Basic參考」一節的內容。實際上,Microsoft Office家族的Word,PowerPoint, Access和Project等應用程序都可以在VB應用程序中調用,其原理和步驟完全相同,只是其對象模型有所不同而已。

4、示例:

首先建立一個窗體(FORM1),在窗體中加入一個DATA控制項和一按鈕,引用Microsoft office/9.shtml' target='_blank' class='article'>Excel類型庫:從"工程"菜單中選擇"引用"欄;選擇Microsoft Excel 9.0 Object Library;選擇"確定"。

在FORM的LOAD事件中加入:

Data1.DatabaseName = 資料庫名稱

Data1.RecordSource = 表名

Data1.Refresh

在按鈕的CLICK事件中加入

Dim Irow, Icol As Integer

Dim Irowcount, Icolcount As Integer

Dim Fieldlen() "存欄位長度值

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

With Data1.Recordset.MoveLast

If .RecordCount < 1 Then

MsgBox ("Error 沒有記錄!")

Exit Sub

End If

Irowcount = .RecordCount "記錄總數

Icolcount = .Fields.Count "欄位總數

ReDim Fieldlen(Icolcount).MoveFirst

For Irow = 1 To Irowcount + 1

For Icol = 1 To Icolcount

Select Case Irow

Case 1 "在Excel中的第一行加標題

xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1).Name

Case 2 "將數組FIELDLEN()存為第一條記錄的欄位長

If IsNull(.Fields(Icol - 1)) = True Then

Fieldlen(Icol) = LenB(.Fields(Icol - 1).Name)

Else

Fieldlen(Icol) = LenB(.Fields(Icol - 1))

End If

xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)

xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)

Case Else

Fieldlen1 = LenB(.Fields(Icol - 1))

If Fieldlen(Icol) < Fieldlen1 Then

xlSheet.Columns(Icol).ColumnWidth = Fieldlen1

Fieldlen(Icol) = Fieldlen1

Else

xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)

End If

xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)

End Select

Next

If Irow <> 1 Then

If Not .EOF Then .MoveNext

End If

Next

With xlSheet

.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Name = "黑體"

.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Bold = True

.Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous

End With
xlApp.Visible = True

xlBook.Save

Set xlApp = Nothing

End With

『叄』 vb實現excel數據導入到sql資料庫報錯

這個我是這么實現的.要用到

Excel.Application

Set xlapp = CreateObject("Excel.Application") '激活EXCEL
xlapp.Visible = True '讓EXCEL可見
Set xlbook = xlapp.Workbooks.Open(App.Path + "個人簡歷.xlt")
'打開工作簿,strDestination為一個EXCEL報表文件
Set xlsheet = xlbook.Worksheets(1) '設定工作表

這個有點像是vb6的、vb.net也有相應的方法的.總之是
excel.application 用到這個就可以了.必要的話導入excel的dll文件.
這樣你就發現、可以用vb.net來對excel來操作.你可以查下微軟的msdn、有具體的屬性方法.

如:
Dim ef As New Excel.Application
Dim es As New Excel.Worksheet
Dim er As Excel.Range
ef.Workbooks.Add()
es = ef.Worksheets("sheet1")
es.Activate()
er = es.Range("a1:C1")
er.Select()
er.Merge()
er.Value = "gordon1117" ef.Visible = True 目前應用了三個對象:application,worksheet和range,三者的關系應該清晰,做到這點就能從基本開始做了:)格式設置都在range對象,只不過在設置對齊屬性上是verticalalignment和horizon

range 用來定位、
然後你可以循環把數據輸出到指定了格式的excel文件里了吧、其實連格式都是可以程序控制的好好學下吧.

可以參考一下這篇文章

『肆』 vb excel導入SQL

直接into到sql

『伍』 VB 把Excel中的內容批量導入SQL資料庫

Students表中有一個欄位的數據類型是image!!!為什麼要是image類型 你插入的數據 照片的那個欄位 是varchar類型 當然會沖突 一般照片存放 都不會用image類型 一般是用varchar來存放 照片的路徑!!!

『陸』 用VB做怎麼將Excel數據導入SQL資料庫中

使用OleDB數據源驅動,可以像讀資料庫一樣,用SQL語句讀Excel,然後把讀到的DataTable,逐行生成SQL語句,然後在資料庫里執行事務。

『柒』 vb如何導入excel到SQL伺服器

打開SQL Server的企業管理器,右擊你現在使用中的SQL 資料庫,所有數據--》導入數據--》選擇數據源為:Microsoft Excel 97-2000--》選擇要導入的Excel文件--》下一步--》填寫目標資料庫SQL 的驗證密碼--》如果要將Excel導入資料庫中一個表中,就請按照提示選擇表吧--》直接下一步--》直到出現成功提示!

『捌』 vb如何將excel中的數據導入到自己創建的sql數據表

用VB里的導入,直接就可以吧.轉換成.DBF就行了唄

關鍵是我的計算機沒有VB沒辦法看..

你用VF就可直接好了.那我簡單說一下VF的方法

你把表存在F盤下.

把VF打開,文件-->導入-->確定
這樣在F盤下就自動產生了一個.dbf格式的表了

『玖』 VB中如何導入SQL資料庫

沒完全明白你的問題,VB是一種語言,SQL也是一種語言。導入資料庫如果是一般txt、excel文件,plsql developers 工具自帶tool中有導入介面。

『拾』 VB6.0如何實現將excel數據導入mssql資料庫中

這里是我用的代碼,估計對你有用:

'On Error Resume Next
Dim fileadd As String
CommonDialog1.ShowOpen
CommonDialog1.Filter = "xls文件(*.xls)|*.xls" '選擇你要的文件
fileadd = CommonDialog1.FileName
If fileadd = "" Then Exit Sub
Set xlApp = CreateObject("Excel.Application") '創建EXCEL對象
Set xlBook = xlApp.Workbooks.Open(fileadd) '打開已經存在的EXCEL工件簿文件
xlApp.Visible = False ' = True '設置EXCEL對象可見(或不可見)
Set xlSheet = xlBook.Worksheets(1) '設置活動工作表
For R = 1 To 99999 '行循環
If LTrim(RTrim(xlBook.Worksheets(1).Cells(R, 1))) <> "" Then
sybw.Adodc3.Refresh
sybw.Adodc3.Recordset.Find "ShiGongBuWei_Name='" & LTrim(RTrim(xlBook.Worksheets(1).Cells(R, 1))) & "'"
If sybw.Adodc3.Recordset.EOF Then
sybw.Adodc3.Recordset.AddNew
sybw.Adodc3.Recordset!ShiGongBuWei_Name = LTrim(RTrim(xlBook.Worksheets(1).Cells(R, 1)))
sybw.Adodc3.Recordset!FenXiangGongCheng_ID = bb
sybw.Adodc3.Recordset.Update
sybw.Adodc3.Refresh
' Call log(MM_Users_NameTrue, "增加了施工部位", MM_Companys_ID)
Else
' MsgBox " 施工部位重復! ", vbOKOnly, "用戶信息"
End If
Else
R = 99999 + 1
End If
Next R

xlApp.DisplayAlerts = False '不進行安全提示 '
Set xlSheet = Nothing '
Set xlBook = Nothing '
xlApp.Quit '
Set xlApp = Nothing