vb2010(vb.net)貌似已經沒有OLE控件
網站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、小程序制作、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了睢縣免費建站歡迎大家使用!
下面的代碼是用PictureBox控件顯示CAD的DWG文件
Private?Structure?BITMAPFILEHEADER
Dim?bfType?As?Short
Dim?bfSize?As?Integer
Dim?bfReserved1?As?Short
Dim?bfReserved2?As?Short
Dim?bfOffBits?As?Integer
End?Structure
Public?Function?GetDwgImage(ByVal?FileName?As?String)?As?Image
If?Not?File.Exists(FileName)?Then?Exit?Function
Dim?DwgF?As?FileStream????'文件流
Dim?PosSentinel?As?Integer??'文件描述塊的位置
Dim?br?As?BinaryReader??'讀取二進制文件
Dim?TypePreview?As?Integer?'縮略圖格式
Dim?PosBMP?As?Integer?'縮略圖位置
Dim?LenBMP?As?Integer?'縮略圖大小
Dim?biBitCount?As?Short?'縮略圖比特深度
Dim?biH?As?BITMAPFILEHEADER?'BMP文件頭,DWG文件中不包含位圖文件頭,要自行加上去
Dim?BMPInfo()?As?Byte??'包含在DWG文件中的BMP文件體
Dim?BMPF?As?New?MemoryStream??'保存位圖的內存文件流
Dim?bmpr?As?New?BinaryWriter(BMPF)?'寫二進制文件類
Dim?myImg?As?Image
Try
DwgF?=?New?FileStream(FileName,?FileMode.Open,?FileAccess.Read)????'文件流
br?=?New?BinaryReader(DwgF)
DwgF.Seek(13,?SeekOrigin.Begin)?'從第十三字節(jié)開始讀取
PosSentinel?=?br.ReadInt32?'第13到17字節(jié)指示縮略圖描述塊的位置
DwgF.Seek(PosSentinel?+?30,?SeekOrigin.Begin)?'將指針移到縮略圖描述塊的第31字節(jié)
TypePreview?=?br.ReadByte?'第31字節(jié)為縮略圖格式信息,2?為BMP格式,3為WMF格式
Select?Case?TypePreview
Case?1
Case?2,?3
PosBMP?=?br.ReadInt32?'DWG文件保存的位圖所在位置
LenBMP?=?br.ReadInt32?'位圖的大小
DwgF.Seek(PosBMP?+?14,?SeekOrigin.Begin)?'移動指針到位圖塊
biBitCount?=?br.ReadInt16?'讀取比特深度
DwgF.Seek(PosBMP,?SeekOrigin.Begin)?'從位圖塊開始處讀取全部位圖內容備用
BMPInfo?=?br.ReadBytes(LenBMP)??'不包含文件頭的位圖信息
br.Close()
DwgF.Close()
With?biH??'建立位圖文件頭
.bfType?=?H4D42
If?biBitCount??9?Then?.bfSize?=?54?+?4?*?(2?^?biBitCount)?+?LenBMP?Else?.bfSize?=?54?+?LenBMP
.bfReserved1?=?0?'保留字節(jié)
.bfReserved2?=?0?'保留字節(jié)
.bfOffBits?=?14?+?H28?+?1024?'圖像數(shù)據偏移
End?With
'以下開始寫入位圖文件頭
bmpr.Write(biH.bfType)?'文件類型
bmpr.Write(biH.bfSize)?'文件大小
bmpr.Write(biH.bfReserved1)?'0
bmpr.Write(biH.bfReserved2)?'0
bmpr.Write(biH.bfOffBits)?'圖像數(shù)據偏移
bmpr.Write(BMPInfo)?'寫入位圖
BMPF.Seek(0,?SeekOrigin.Begin)?'指針移到文件開始處
myImg?=?Image.FromStream(BMPF)?'創(chuàng)建位圖文件對象
Return?myImg
bmpr.Close()
BMPF.Close()
End?Select
Catch?ex?As?Exception
Return?Nothing
End?Try
End?Function
在access數(shù)據庫里將字段的類型設置為ole對象
Public img As Byte() '圖片處理用的字節(jié)數(shù)組
img=My.Computer.FileSystem.ReadAllBytes(filePath)'filePath是你圖片文件的路徑
剩下的就是數(shù)據庫插入操作了
Dim?cn?As?New?OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=Data.mdb")
Dim?comm?As?OleDb.OleDbCommand
comm?=?New?OleDb.OleDbCommand(?_
"INSERT?INTO?Photo(BuFan_F,PhotoNo,Photo)?Values('"??Me.CobBuFan.Text.Trim??"','"??Me.txtNo.Text.Trim??"',@image)",?cn)
'向數(shù)據庫添加存儲了圖片數(shù)據的二進制數(shù)組
comm.Parameters.Add("@image",?_
OleDb.OleDbType.Binary,?img.Length).Value?=?img
If?cn.State?=?ConnectionState.Closed?Then?cn.Open()?'打開數(shù)據庫連接
comm.ExecuteNonQuery()?'執(zhí)行數(shù)據庫命令
If?cn.State?=?ConnectionState.Open?Then?cn.Close()?'關閉數(shù)據庫連接
MessageBox.Show("圖片成功保存到數(shù)據庫",?"完成",?MessageBoxButtons.OK,?MessageBoxIcon.Information)
使用 ADO 連接到 Excel
ADO 使用 MDAC 中以下兩個 OLE DB 提供程序中的任何一個都可以連接到 Excel 數(shù)據文件。
Microsoft Jet OLE DB Provider — 或 —Microsoft OLE DB Provider for ODBC Drivers
使用 Microsoft Jet OLE DB Provider
Jet 提供程序只需要兩條信息就可以連接到 Excel 數(shù)據源:路徑(包括文件名),和 Excel 文件版本。
Jet 提供程序使用連接字符串
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" _
"Extended Properties=Excel 8.0;"
.Open
End With
提供程序版本:必須使用 Jet 4.0 提供程序;Jet 3.51 提供程序不支持 Jet ISAM 驅動程序。如果指定了 Jet 3.51 提供程序,在運行時會出現(xiàn)以下錯誤信息:
Couldn't find installable ISAM.
Excel 版本:對于 Excel 95 工作簿(Excel 版本 7.0),應指定 Excel 5.0;對于 Excel 97、Excel 2000 或 Excel 2002 (XP) 工作簿(Excel 版本 8.0、9.0 和 10.0),應指定 Excel 8.0 版本。
使用“數(shù)據鏈接屬性”對話框的 Jet 提供程序
如果在應用程序中使用“ADO 數(shù)據控件”或“數(shù)據環(huán)境”,就會出現(xiàn)數(shù)據鏈接屬性對話框來收集必要的連接設置。
在提供程序選項卡上,選擇 Jet 4.0 提供程序;Jet 3.51 提供程序不支持 Jet ISAM 驅動程序。如果指定了 Jet 3.51 提供程序,在運行時會出現(xiàn)以下錯誤信息:
Couldn't find installable ISAM.
在連接選項卡上,瀏覽到工作簿文件。忽略“用戶 ID”和“密碼”項,因為這些不適用于 Excel 連接。(無法打開受密碼保護的 Excel 文件作為數(shù)據源。)
在所有選項卡上,從列表中選擇擴展屬性,然后單擊編輯值。輸入 Excel 8.0;,用分號 (;) 將其與任何其他已有的項分隔。如果忽略此步驟,測試連接時將出現(xiàn)一條錯誤信息。這是因為如果不另行指定,Jet 提供程序期望 Microsoft Access 數(shù)據庫。返回到連接選項卡,并單擊測試連接。將出現(xiàn)一個消息框,通知測試已成功完成即可。