Файл с расширением .xlsx уже сохранен в базе данных из пользовательского интерфейса. теперь я читаю данные из базы данных, используя приведенный ниже код и записывая файл временного файла.Операции чтения/записи файла .xlsx
Dim Buffer() As Byte
Dim Amount As Integer = 2000
Dim TripCount As Integer = 0
Dim reminder As Integer = 0
ReDim Buffer(FileSize)
TripCount = FileSize \ Amount
reminder = FileSize Mod Amount
If reminder > 0 Then
TripCount = TripCount + 1
End If
For cnt As Integer = 0 To TripCount - 1
Dim Offset As Integer = 1
Offset = Offset + cnt * Amount
Dim ReadCount As Integer = Amount
If cnt = TripCount - 1 Then
ReadCount = CInt(FileSize) - (cnt * Amount)
End If
Dim b() As Byte = GetFileData(CLng(documentId), ReadCount, Offset) 'GetFileData methdo as last code segment
Array.Copy(b, 0, Buffer, Offset - 1, b.Length)
Next
Dim downloadFile As New FileInfo(selectedPath + "\" + FileName)
Using bw As New BinaryWriter(downloadFile.OpenWrite)
bw.Write(Buffer)
bw.Close()
End Using
Public Function GetFileData(ByVal documentId As Long, ByVal amount As Integer, ByVal offset As Integer) As Byte()
Dim RetVal() As Byte = Nothing
Dim b1 As Byte() = Nothing
Try
Dim sql As String = ""
ReDim RetVal(amount)
sql = " SELECT DBMS_LOB.SUBSTR(F.DF_FILE," + amount.ToString + "," + offset.ToString + " ) DATA"
sql += " FROM table_name F"
sql += " WHERE F.docid = " + documentId.ToString
Dim data As DataTable = FetchData(sql)
b1 = CType(data.Rows(0)("DATA"), Byte())
Array.Copy(b1, 0, RetVal, 0, b1.Length)
Catch ex As Exception
End Try
Return RetVal
End Function
после получения файла во временном местоположении, я пытаюсь открыть его, но он бросает ниже ошибки.
Excel нашел нечитаемый контент в 'filename.xlsx' Вы хотите восстановить содержимое этой книги? если вы доверяете источнику этой книги, нажмите «Да»
, но тот же набор кода работает для файла формата .xls.
Вы получаете какое-либо исключение? Кажется, вы просто ловите исключения в 'GetFileData' и отбрасываете их. Не делайте этого - просто вытащите 'Try' /' Catch' для начала и разрешите распространение исключения. Если что-то пошло не так, вам нужно знать об этом. – Ben
Откуда берется «TripCount»? – Ben
@Ben - теперь я обновил код Ben. – picnic4u