我有下面的代码将存储在链接的Oracle表中的blob字段中的数据下载到文件中。 Blob数据存储excel文件(.xlsx),但当我尝试在Excel中打开下载的文件时,出现错误,指出文件已损坏,格式不正确。下面的代码 -使用Access VBA打开从Oracle数据库中的blob字段下载的excel文件时发现错误
Option Explicit
Const BlockSize = 32768
Public Function DownloadBlob()
Dim db As Database
Dim rst As Recordset
Dim NumBlocks As Integer, DestFile As Integer, i As Integer
Dim FileLength As Long, LeftOver As Long
Dim FileData, FilePath As String
Dim RetVal As Variant
Set db = CurrentDb
Set rst = db.OpenRecordset("Select Blob_Field FROM Table1;")
NumBlocks = FileLength/BlockSize
LeftOver = FileLength Mod BlockSize
DestFile = FreeFile()
FilePath = "C:\Desktop\test.xlsx"
Open FilePath For Output As DestFile
Close DestFile
Open FilePath For Binary As DestFile
FileData = rst.Fields(0).GetChunk(0, LeftOver)
Put DestFile, , FileData
For i = 1 To NumBlocks
FileData = rst.Fields(0).GetChunk((i - 1) * BlockSize + LeftOver, BlockSize)
Put DestFile, , FileData
Next i
Close DestFile
End Function
你在文件顶部有'Const BlockSize = 32768',对吗?通过GUI提取文件时没有问题? –
您在Access中,DB限制为2GB。为什么要浪费宝贵的存储空间来存放文件服务器上完美的存储空间? –
对不起,如果我之前没有更清楚,正如我在标题中所述,该表是Oracle数据库中的链接表,因此2GB限制不适用,并且我只有RO访问该数据库的权限,并且必须下载这些excel文件。 –