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
OleContainer操作Excel以二进制方式读写数据库的更多相关文章
- C++结构体对象数组的二进制方式读写
以一个学生信息的结构体数组为例. #include<iostream>#include<string>#include<fstream>using namespac ...
- C#操作Excel的OLEDB方式与COM方式比较
2013-03-15 13:42:54 作者:有理想的码农 在对Excel进行读写操作时,使用微软自身提供的解决方案,有两种(第三方方式除外),分别是OLEDB方式和调用COM组件的方式 ...
- ASP.Net将图片以二进制方式存入数据库,并读取
把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.tex ...
- C#使用oledb操作excel文件的方法
本文实例讲述了C#使用oledb操作excel文件的方法.分享给大家供大家参考.具体分析如下: 不管什么编程语言都会提供操作Excel文件的方式,C#操作Excel主要有以下几种方式: 1.Excel ...
- C# 操作 Excel 文件(.xls 或 .xlsx)
在.net中,常用的操作excel文件的方式,有三种: OLE DB的形式, 第三方框架NPOI, Office组件. 总结: 通过对比,在读取大数据量的excel文件,建议用OLE DB的形式,把e ...
- C#操作Excel(创建、打开、读写、保存)几种方法的总结
在.NET开发中,不管是web程序还是桌面软件(尤其是涉及数据库操作的MIS系统等),常常需操作Excel,如导出数据到Excel,读取Excel中数据到程序中等.总结起来,其操作不外乎创建.打开.读 ...
- [Asp.net] C# 操作Excel的几种方式 优缺点比较
在项目中我们常常需要将数据库中的数据导出成Excel文件 有一次工作中我的目的就是读取Excel到内存中,整理成指定格式 整理后再导出到Excel. 因为我要处理的每个Excel表格文件很大.一个表格 ...
- 【转载】C#将图片以二进制流的方式存入数据库
在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据.此文将介 ...
- Python操作excel的几种方式--xlrd、xlwt、openpyxl
openpyxl xlrd xlwt 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中 ...
随机推荐
- 在C#中使用C++编写的类1
转载地址:http://blog.csdn.net/starlee/article/details/2864588 现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额.因此很多以前 ...
- CentOS6.5 搭建基础PHP环境(yum安装)
转载:闲来无事 » CentOS6.5 搭建基础PHP环境(yum安装) yum安装php环境只需要几条简单的命令就可以实现,OK,各位客官,菜来了.首先确保你的yum源可用,或者网络是通的,不然下载 ...
- pyfits 读取bintable
import pyfits as pf import numpy as np import math import pandas as pd import matplotlib.pyplot as p ...
- 小记:css特殊性
今天早上遇到了个小bug,刚好用从css权威指南学到的知识解决了 html结构 <ul class="portlet-nav"> <li><a id= ...
- MyPanel与QWidget使用QStyle设置背景色的不同
----------- MainWindow.h ------------------- class MyPanel: public QWidget{ Q_OBJECTpublic: ...
- Leetcode 线性表 Swap Nodes in Pairs
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Swap Nodes in Pairs Total Accepted: 12511 Tota ...
- [置顶] Guava学习之Iterators
Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法.除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable ...
- Swift实现糗事百科Demo(实战项目)
在这里,你将会学习到解析JSON数据,网络请求功能,动态调整cell内容等功能!!! 最终的结果 是这样的,项目相对简单,很适合入门!下面让我们一起开始教程之旅吧! 1.先看下项目工程结构: 第一步: ...
- Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系
HTTP协议本身是无状态的,即使是同一台电脑同一个浏览器打开同一个页面两次,服务器不知道这两次请求是同一个客户端发送过来的,两次请求是完全独立的.例如,第一次请求时已经登录了,第二次再请求服务器会“忘 ...
- javascript笔记整理(函数)
javascript函数的声明和调用将完成某一特定功能的代码集合起来,可以重复使用的代码块. 一.函数的声明方式(创建) A.基本语法(function 关键字)function 函数名([参数1] ...