1. 程式人生 > >如何用DELPHI實現把WORD、EXCEL和圖片等儲存到資料庫中

如何用DELPHI實現把WORD、EXCEL和圖片等儲存到資料庫中

 用image欄位儲存這些文件。  
  var  
      word_stream:   TMemoryStream;  
      filename:   string;  
  begin  
      if   odgDoc.Execute   then//odgDoc:OpenDialog  
      begin  
          filename   :=   ExtractFileName(odgDoc.FileName);  
          word_stream   :=   TMemoryStream.Create;  
          word_stream.LoadFromFile(odgDoc.FileName);  
          word_stream.Position   :=   0;  
          cdsPACT.Append  
          cdsPACT.FieldByName('DocName').Value   :=   filename;  
          TBlobField(cdsPACT.FieldByName('PactText')).LoadFromStream(word_stream);  
          cdsPACT.Post;  
          word_stream.Free;  
      end;  
  end;

----   目前,Delphi被越來越多的人選中作為MIS系統開發中的前臺工具。在以Delphi為前臺,一些大型資料庫為後臺的MIS系統中,圖形的處理不可避 免;即從以Delphi開發的前臺介面輸入圖形,並儲存到相應的資料庫欄位中。在這種形式的圖形處理中,BMP檔案的處理比較簡單,因為Delphi本身 有Image和DBImage構件,用這些構件與資料庫中可以儲存圖形的大型欄位BLOB比較容易地進行資料交換。以這種方式進行圖形處理已應用在許多 MIS軟體中,包括處理人員照片的人事檔案系統等。      
  ----   但是,BMP檔案一般都比較大。而且有時要錄入的是自己在計算機上畫的簡圖,並伴隨大量文字說明。這種情況用Win95中的畫圖板等處理BMP檔案的工具 處理就比較困難。一般應用人員都喜歡用WORD畫圖和寫說明文字,然後儲存到資料庫中。    
  ----   經過一段時間的摸索,我們解決了這個問題,並經過完善,在應用中執行較好。程式如下:    
  procedure   TsampleForm.OpenDOCClick(Sender:   TObject);  
  var  
      MemSize:   Integer;  
      Buffer:   PChar;  
      Myfile:   TFileStream;  
      Stream:   TBlobStream;  
  begin  
      OpenDialog1.Filter:='WORD文件(*.DOC)|*.DOC';{從對話窗選擇檔案}  
      if   OpenDialog1.Execute   then    
      begin  
          Myfile:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);  
          with   table1   do       {‘table1’為含BLOB欄位的表名}  
          begin  
              Open;  
              Edit;  
              Stream   :=   TBlobStream.Create(FieldByName('Doc')   as   TBlobField,   bmWrite);{‘Doc’為BLOB欄位名}    
              MemSize   :=   MyFile.Size;  
              Inc(MemSize);   {Make   room   for   the     buffer's   null   terminator.}  
              Buffer   :=   AllocMem(MemSize);               {Allocate   the   memory.}    
              try  
                  Stream.Seek(0,   soFromBeginning);     {Seek   0   bytes   from   the   stream's   end   point}  
                  MyFile.Read(Buffer^,MemSize);  
                  Stream.Write(Buffer^,MemSize);  
              finally  
                  MyFile.Free;  
                  Stream.Free;  
              end;  
                        try  
                          Post;  
                        except  
                          on   E:   EDatabaseError   do  
                    if   HandelException(E)<   >0   then    
                                                  exit  
                  else  
                  raise;  
                        end;  
            end;  
            Doc_ole.CreateObjectFromFile(OpenDialog1.FileName,False);  
            Doc_ole.Run;{Doc_ole為ToleContainer構件名}  
        end;  
  end;  
   
  ----   以上為向資料庫中寫入的程式,應用中從對話窗取出檔案在ToleContainer構件中顯示的同時存入資料庫。    
  procedure   TsampleForm.GetDocClick(Sender:   TObject);  
  var  
      MemSize:   Integer;  
      Buffer:   PChar;  
      Myfile:   TFileStream;  
      Stream:   TBlobStream;  
  begin  
          Myfile:=TFileStream.Create('c:/temp.tmp',fmCreate);  
          with   Query1   do  
          begin  
              Stream   :=   TBlobStream.Create(FieldByName('Doc')   as   TBlobField,   bmRead);  
              MemSize   :=   Stream.Size;  
              Inc(MemSize);   {Make   room   for   the   buffer's   null   terminator.}  
              Buffer   :=   AllocMem(MemSize);           {Allocate   the   memory.}  
              try  
                  Stream.Read(Buffer^,MemSize);  
                  MyFile.Write(Buffer^,MemSize);  
              finally  
                  MyFile.Free;  
                  Stream.Free;  
              end;  
          end;  
              if   FileExists('c:/temp.DOC')   then    
      DeleteFile('c:/temp.DOC');  
              if   FileExists('c:/temp.tmp')   then    
              begin  
                  RenameFile('c:/temp.tmp',   'c:/temp.DOC');  
                  Doc_ole.CreateObjectFromFile('c:/temp.DOC',False);  
                  Doc_ole.Run;  
              end;  
  end;  
  ----   以上程式為從資料庫從將WORD文件取出,並放在temp.doc的臨時檔案上並在ToleContainer構件中顯示。    
  ----   在程式的其他部份應準確控制表記錄指標,使WORD文件的存取發生在正確的記錄位置。  

相關推薦

如何用DELPHI實現WORDEXCEL圖片儲存資料庫

 用image欄位儲存這些文件。     var         word_stream:   TMemoryStream;         filename:   string;     begin         if   odgDoc.Execut

java實現線上預覽--poi實現wordexcelppt轉html

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/aabbyyz java實現線上預覽 - -之poi實現word、e

Asp.net MVC 利用(aspose+pdfobject.js) 實現線上預覽wordexcelpptpdf檔案

線上預覽word、excel、ppt利用aspose動態生成html 主要程式碼 private bool OfficeDocumentToHtml(string sourceDoc, string saveDoc) { bool result = false;

office(如:WordExcelPPT )檔案輕鬆實現線上預覽

解決方案有很多,比如可以先將檔案轉圖片或者pdf然後再網頁中顯示, 我在這裡說的可能並不適合大家,這裡簡單說下幾個快捷的方式 方案一: 可以直接使用第三方服務,不過這個需要收費的,我在這列幾個 http://www.yozodcs.com/ htt

javapoi實現word讀取修改操作(轉)

java程式設計要實現對word的操作沒有vb那種程式語言來得容易,得藉助一些開源元件,其中就包括jacob、poi等, 而poi應用得最為廣泛,對word2003和2007的讀和寫word操作都十分方便。它是Apache組織的一個專案,早在2001年就已經發布了第 一個版本,可以說是apache組織的一

Asp.net實現直接在瀏覽器預覽WordExcelPDFTxt檔案(附原始碼)

publicstaticvoid Priview(System.Web.UI.Page p, string inFilePath, string outDirPath ="")    {        Microsoft.Office.Interop.Excel.Application excel =nul

.net 實現wordexcelpptpdf預覽功能

先說一下我的思路:word-->pdf-->swf-->顯示  我是把word最終用flash 來顯示,所以要經過兩個步驟來轉化 第一步  word轉pdf (其他文件一樣 1.引用微軟的office元件 如上圖,當然你必須先安裝office2007或o

Ubuntu 伺服器 PHP實現wordexcelpptpdf 文件線上閱讀功能的實現

1、實現原理思路 要實現 word 等文件線上閱讀,需要將文件轉換成 swf 的 flash 檔案,然後結合 flexpaper ,在頁面上閱讀顯示。 這個轉換過程有些複雜,首先需要我們把上傳的檔案轉換成 pdf 格式的檔案,然後在把 pdf 格式的檔案轉換為 swf 的格

Ueditor結合七牛雲存儲上傳圖片附件圖片在線管理的實現最新更新

1.4 star json serve 列出文件 教程 開發 存儲服務器 name 最新下載地址: https://github.com/widuu/qiniu_ueditor_1.4.3 Ueditor七牛雲存儲版本 註意事項 老版本請查看 : https://gith

AndroidRecyclerView實現的二維Excel效果組件

eight main AS UC alt 包括 data github AD excelPanel 二維RecyclerView。不僅可以加載歷史數據,而且可以加載未來的數據。 包括在您的項目中 excelPanel 二維RecyclerView。不僅可以加載

c#實現文件的讀取系列操作

static filename ros ima git int lin {0} ase Gitee代碼鏈接:https://gitee.com/hyr5201314/workcount 1.解題思路 首先要先讀取文件,然後調用函數實現返回文件的字符數,行數,單詞總數。用

FTP主動模式被動模式在VRP上實現(實驗報文理論解析)

理解 客戶 warning 簡述 查看 inf 要求 sep mac 嗯~點關註不迷路 1.簡述主動模式的FTP建立連接的主要步驟 圖1-19 FTP主動模式示意圖基本原理FTP(文件傳輸協議)的特殊性: 大多數的TCP服務是使用單個的連接,一般是客戶向服務器的一個周知端口

45個WordExcelPPT快捷鍵匯總!

常用快捷鍵 cap stat 分享 atp 一個 pdf轉word 文案 alt 幹貨來啦,好多朋友說需要Word、Excel、PPT常用快捷鍵,今天就給大家匯總了一下,順便給大家普及一個PDF轉Word小技巧,需要的朋友趕緊收藏起來吧,每天記一點,以後做表寫文案都不怕速

學霸必備!自學網站推薦給你們,內含CADPSWordExcel技巧!

學習是一個永無止境的事情,更何況如今網際網路的時代!要想在這個時代裡脫穎而出,不學點東西怎麼行!今天小編為大家準備了款自學網站,希望你們能夠掌握到更多的知識! 1.我要自學網http://www.51zxw.net/ 課程挺多的,關鍵裡面很多課程是免費的,老師講解的也詳細。適合大學生或者已經上班自學的

命令實現Win7遠端桌面關機重啟

關機 shutdown -s -t 0 重啟 shutdown -r -t 0   開啟執行框(Win+R鍵),輸入上述命令即可,後面的數字表示關機/重啟延遲的時間 at 12:00 shutdown -s在執行裡輸入這個然後敲回車他就會在12點種的時候關機  

Java程式設計師從笨鳥到菜鳥之(一百零三)java操作officepdf檔案(一)java讀取wordexcelpd

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PDFWORDEXCELPPT預覽

** PDF、WORD、EXCEL、PPT預覽 ** 前臺頁面 獲取fileType(檔案型別)、key(檔案id)、title(檔案標題)、url(檔案路徑)、documentType(不同的檔案格式對應的值不同,後臺程式碼中會有,傳到前臺即可)5個值到頁面即

wordexcelppt轉PDF檔案

今天專案要求做個word、excel轉pdf的功能,百般搜刮,測試,終於完成. 下面這個是word、excel、ppt轉pdf功能,支援doc、docx、xls、xlsx、ppt、pptx轉pdf 1、 準備工作:windows環境、maven專案,普通專案也可以 下載jacob.zip,地址:&nbs

java實現sql語句查詢的結果集寫到dbf檔案

這個其實就是一個匯出生成DBF檔案的功能,實現思路是這樣:首先動態拼接一個sql語句,執行後返回結果集到程式碼中,再通過dbfwriter物件把結果集的資料寫到dbf檔案裡。 1、開啟資料庫連線,執行sql語句,獲得結果集 private Connection bakConn;

微軟在WordExcelWindows Search修補了RCE漏洞

Microsoft修復了影響Microsoft Word,Microsoft Excel和Microsoft Windows Search的多個遠端執行程式碼漏洞,該漏洞允許遠端攻擊者在易受攻擊的Windows系統上執行任意程式碼。 Microsoft Word受到兩個記憶體損壞錯誤 (CVE-2