zoukankan      html  css  js  c++  java
  • OleContainer操作Excel以二进制方式读写数据库

    需求源头:
    OleContainer操作Excel,想把Excel以二进制方式存入数据库,并且以二进制方式读取
    存入流:
    Procedure SaveToStream(ADOTable1: TAdoTable)
    var
      vStream: TMemoryStream;
    begin
     try
       try
        vStream := TMemoryStream.Create;
        vStream.Clear;
        OleContainer1.SaveToStream(vStream);
        vStream.Position := 0;
        ADOTable1.Append;
        TBlobField(ADOTable1.FieldByName("BlobField")).LoadFromStream(vStream);
        ADOTable1.Post;  
       finally
          FreeAndNil(vStream);
       end;
      except
        exit;
      end;
    end;
    读取流:
    procedure LoadFromStream(ADOTable1: TAdoTable)
    var
      //注意:这里要用TADOBlobStream,如果用TMemoryStream等流类,则会出现错误  
      //OleContainer的二进制流格式和Access的二进制流格式不同
      //TADOBlobStream是专门用来Access的流转化的,TADOBlobStream继承自TMemoryStream
      vStream: TADOBlobStream;
    begin
      try    
        vStream := TADOBlobStream.Create(TBlobField(ADOTable1.FieldByName("BlobField")), bmread);
        if (OleContainer1.State = osOpen) or (OleContainer1.State = osUIActive) then
        begin
          OleContainer1.DestroyObject;
        end;
        vStream.Position := 0;
        Olecontainer1.LoadFromStream(vStream);
      except
      end;
    end;
    问题总结:
    注意流格式的问题。
    注:附件里有我的一个小工具,用来帮助自己平时操作Excel在Access中的读取。http://www.delphibbs.com/keylife/iblog_show.asp?xid=21941

    http://blog.csdn.net/shuaihj/article/details/725534

  • 相关阅读:
    django 模板继承
    redis集群环境配置
    压力测试工具:apache bench(ab)
    php yield关键字以及协程的实现
    php图片木马实现原理
    关于接口幂等性
    关于easyswoole实现websocket聊天室的步骤解析
    php混淆加密解密实战
    关于mysql集群主从服务器搭建
    mysql binlog恢复数据实战
  • 原文地址:https://www.cnblogs.com/findumars/p/5346063.html
Copyright © 2011-2022 走看看