把excel文件保存在數據庫里。又可以把數據庫數據還原回原來的excel文件。
如題。請各位幫忙。。謝
[解决办法]
最简单的,进行二进制读取和保存~~当数据流来操作,呵呵~~
==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
优惠接单开发,组件控件定制开发,成品源代码批发
联系方式:Q64180940 全天在线
==================================================================
[解决办法]
樓上說的對,當作一個數據流處理
寫數據庫
Dim myStream As Stream
Dim openFileDialog1 As New OpenFileDialog
' Dim ms As New MemoryStream
Dim AryPictureData() As Byte
Dim strDateCode As String
Dim dsTemp01 As DataSet
Dim strFileName, FileName As String
Dim daTemp01 As OleDb.OleDbDataAdapter
Dim rw01 As DataRow
Dim x, y, z As Integer
Dim daTempComm01 As OleDb.OleDbCommandBuilder
openFileDialog1.InitialDirectory = "D:\"
openFileDialog1.Filter = "EXCEL files (*.xsl)|*.xls|JPEG files (*.jpg)|*.jpg|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 2
openFileDialog1.RestoreDirectory = True
If openFileDialog1.ShowDialog() = DialogResult.OK Then
myStream = openFileDialog1.OpenFile()
If Not (myStream Is Nothing) Then
strFileName = openFileDialog1.FileName
FileName = Mid(strFileName, InStrRev(strFileName, "\") + 1)
txtSourceFileName.Text = Mid(strFileName, InStrRev(strFileName, "\") + 1)
' mid(strFileName,InStrRev(strFileName, "\")+1)
' OpenFileDialog dlg = new OpenFileDialog();
'dlg.ShowDialog();
'Console.WriteLine(Path.GetFileName(dlg.FileName)
ReDim AryPictureData(myStream.Length)
myStream.Position = 0
myStream.Read(AryPictureData, 0, System.Convert.ToInt32(myStream.Length))
strDateCode = DateToStr(Now())
dsTemp01 = New DataSet
daTemp01 = New OleDb.OleDbDataAdapter("Select * from [PP_datatest] where [Code] like '" & strDateCode & "%';", connDB)
daTemp01.Fill(dsTemp01, "DataList")
' z = dsTemp01.Tables("DataList").Rows.Count
rw01 = dsTemp01.Tables("DataList").NewRow
rw01("Data") = AryPictureData
rw01("Filename") = FileName
rw01("Code") = strDateCode
dsTemp01.Tables("DataList").Rows.Add(rw01)
daTempComm01 = New OleDb.OleDbCommandBuilder(daTemp01)
daTemp01.Update(dsTemp01, "DataList")
MsgBox("添加成功")
' Insert code to read the stream here.
myStream.Close()
End If
End If
讀取 數據庫
Dim myStream As Stream
Dim dsTemp01 As DataSet
Dim daTemp01 As OleDb.OleDbDataAdapter
Dim rw01 As DataRow
Dim x, y, z As Integer
Dim AryData() As Byte
Dim StrFileName As String
' Dim Writefile As New System.io.StreamWriter("D:\12345.txt")
Try
Call DetermineIfDirectoryExists()
dsTemp01 = New DataSet
daTemp01 = New OleDb.OleDbDataAdapter("Select * from [PP_datatest] where [Code]='" & strCode & "';", connDB)
daTemp01.Fill(dsTemp01, "DataList")
z = dsTemp01.Tables("DataList").Rows.Count
rw01 = dsTemp01.Tables("DataList").Rows(0)
AryData = rw01("Data")
StrFileName = rw01("filename")
' Str &= ControlChars.CrLf
Dim str As String
Dim fStream As FileStream
Dim sFileName As String = StrFileName
' sFileName = Application.StartupPath & "\login.log"
fStream = New FileStream("D:\PL_files\" & sFileName, FileMode.Append)
' Dim bWrite() As Byte = System.Text.Encoding.Default.GetBytes(Str)
fStream.Write(AryData, 0, AryData.Length) '用二進制寫入文件
fStream.Flush()
fStream.Close()
fStream = Nothing
' MsgBox("正在打開附件,請稍等!")
Process.Start("D:\PL_files\" & StrFileName) '打開附件
Catch ex As Exception
MsgBox("該附件可能不存在,有問題請與管理員聯系")
MsgBox(ex.Message)
End Try
[解决办法]
保存Excel到数据库
Dim conn As New OleDbConnection(My.Settings.ConnStr & "d:\database.mdb")
Dim comm As OleDbCommand = conn.CreateCommand
comm.CommandText = "insert into tablename select * from [excel 8.0;HDR=yes;IMEX=1;database="d:\upload.xls].[sheet1$]"
conn.Open()
comm.ExecuteNonQuery()
反过来也是一样