OleContainer操作Excel以二进制方式读写数据库-阿里云开发者社区

开发者社区> 非常老帅> 正文

OleContainer操作Excel以二进制方式读写数据库

简介: 需求源头:OleContainer操作Excel,想把Excel以二进制方式存入数据库,并且以二进制方式读取存入流:Procedure SaveToStream(ADOTable1: TAdoTable)var  vStream: TMemoryStream;begin try   try    vStream := TMemoryStream.
+关注继续查看

需求源头:
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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python读写excel
1 #-*- coding:utf-8 -*- 2 #__author__ = 'liu-ke' 3 import xlrd 4 from xlutils.copy import copy 5 mybook = xlrd.
771 0
.NET常用操作小知识
一、.NET截取指定长度汉字超出部分以“.....”表示 /// /// 将指定字符串按指定长度进行剪切, /// /// 需要截断的字符串 /// 字符串的最大长度 /// 超过长度的后缀 /// 如果超过长度,返回截断后的新字符串加上后缀,否则,...
706 0
CentOS 6.5安装二进制版本的MongoDB 2.6
CentOS 6.5安装二进制版本的MongoDB 2.6 MongoDB的国外镜像访问非常慢,以至于选择MongoDB官网的在线安装很不靠谱。那么,我们可以选择安装MongoDB 2.6的二进制发布包。
781 0
DBHelper数据库操作类(二)
不错文章:http://www.codefans.net/articles/562.shtml              http://www.cnblogs.com/gaobing/p/3878342.
628 0
Android Jxl读写Excel
Jxl 包下载 Android Studio 依赖 compile 'net.sourceforge.jexcelapi:jxl:2.6.12' 本测试在Exlipse中, 由于Jxl的跨平台性。
1734 0
设备上报二进制数据在 IoT 平台解析实践
设备上报二进制数据在 IoT 平台解析实践
7016 0
使用ServiceStack.Redis实现Redis数据读写
原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; ...
1461 0
+关注
非常老帅
IT行业从业10+年
481
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载