现在可以把内容倒入到数据库,但是我也想把doc的格式也保存下来放入数据库,譬如(字体,字体颜色,)等。请各位指导,最好有代码,谢谢
解决方案 »
- 从数据库中提取字段形成树形列表怎么做啊
- 关于TCxSplitter控件的问题
- 表格上多行数据转移有错误,请高手帮忙解决!谢谢!
- 刚才看到一位武林高手的几行精妙代码,百思不得其解,希望各位指点
- 急急急!!!Delphi的最新数据库引擎 dbexpress 的问题,ntdll错误
- 我在删除记录时,出现以下错误,请帮忙解决!!!
- 关于delphi7+MSSQL2000连接的问题
- Iphone的动画翻页效果,Delphi实现的思路
- 急! DBGrid单元格失去焦点时触发事件
- QuickRep1上添加QRBand,QRBand 上添加一个QRDBText,且连接数据库完毕,为什么QrDBText上只显示一条记录?还有:看里面吧:)
- PageControl中多个TABSHEET如何提交数据
- 关于面向对象中( nil )
var
MemStream: TMemoryStream;
I: integer;
begin
if OpenDialog1.Execute then
begin
if not FileExists(OpenDialog1.FileName) then
begin
Application.MessageBox('您所添加的文件不存在!', '提示', MB_ICONINFORMATION);
Exit;
end;
for I := 0 to OpenDialog1.Files.Count - 1 do //添加文件
begin
MemStream := TMemoryStream.Create; //创建流
try
MemStream.LoadFromFile(OpenDialog1.Files[I]); //将文件读到流中去
MemStream.Seek(0, soFromBeginning);
Compress(MemStream); //压缩文件
MemStream.Seek(0, soFromBeginning);
with ADOQuery do
begin
Append;
FieldByName('文件名').AsString := ChangeFileExt(ExtractFileName(OpenPictureDialog1.Files[I]), '');
TBlobField(FieldByName('文档正文')).LoadFromStream(MemStream);
FieldByName('文件扩展名').AsString := ExtractFileExt(OpenPictureDialog1.Files[I]);
ADOQuery.Post;
end;
finally
MemStream.Free;
end;
end;
end;
end;procedure Compress(var CompressedStream: TMemoryStream);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(clMax, DestStream);
Try
CompressedStream.SaveToStream(SourceStream);
SourceStream.Free;
CompressedStream.Clear;
CompressedStream.WriteBuffer(Count, SizeOf(Count));
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;//导出
var
MemStream: TMemoryStream;
FileName: string;
begin
if SaveDialog.Execute then
begin
MemStream := TMemoryStream.Create;
try
TBlobField(ADOQuery.FieldByName('文档正文')).SaveToStream(MemStream);
MemStream.Seek(0, soFromBeginning);
UnCompress(MemStream); //解压数据
MemStream.Seek(0, soFromBeginning);
FileName := SaveDialog.FileName;
if ExtractFileExt(FileName) = '' then
FileName := FileName + Trim(ADOQuery.FieldByName('文件扩展名').AsString);
if FileExists(FileName) then
begin
if Application.MessageBox('该文件名已存在,是否替换原有文件?', '提示', MB_YESNO + MB_ICONQUESTION) = idyes then
begin
MemStream.SaveToFile(FileName);
Application.MessageBox('导出成功!', '提示', MB_OK);
end;
end
else
begin
MemStream.SaveToFile(FileName);
Application.MessageBox('导出成功!', '提示', MB_OK);
end;
finally
MemStream.Free;
end;
end;
end;procedure UnCompress(const CompressedStream: TMemoryStream);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: integer;
Begin
CompressedStream.Seek(0,soFromBeginning);
CompressedStream.ReadBuffer(Count, SizeOf(Count));
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
SourceStream.ReadBuffer(Buffer^, Count);
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;
CompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
//可能要稍稍修改一下