UI에서 데이터베이스에 이미 .xlsx 파일이 저장되어 있습니다. 이제 아래 코드를 사용하여 데이터베이스에서 데이터를 읽고 temp 위치 파일을 작성합니다..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