我在dxDBGrid中添加一个栏位dbgDetailPluImage,这个栏位是TdxDBGridGraphicColumn类型;
这个栏位内容显示的是图片,通过下面两个事件加载图片:
procedure TCustPriceFm.dbgDetailPluImageAssignPicture(Sender: TObject;
var Picture: TPicture);
var
ms: TMemoryStream;
jpegimg: TJPEGImage;
begin
ms := TMemoryStream.Create;
try
TBlobField(mdDetailPluImage).SaveToStream(ms);
if ms.Size > 10 then
begin
ms.Seek(0, soFromBeginning);
jpegimg := TJPEGImage.Create;
try
jpegimg.LoadFromStream(ms);
Picture.Graphic := jpegimg;
finally
jpegimg.Free;
end;
end else
Picture.Assign(nil);
finally
ms.Free;
end;
end;procedure TCustPriceFm.dbgDetailPluImageGetGraphicClass(Sender: TObject;
Node: TdxTreeListNode; var GraphicClass: TGraphicClass);
begin
GraphicClass := TGraphicClass(GetClass('TJPEGImage'));
end;
在程序中的显示和操作都是正常的,现在的问题是我想将这个表格的内容导出到Excel文件,使用:
dbgDetail.SaveToXLS(ExcelFileName, True);
导出的结果是这样的:
---------------------------
库存数量 商品图片 成本价格
9 (GRAPHIC) 450
0 (GRAPHIC) 1136
---------------------------
没有具体的图片,栏位中用“(GRAPHIC)”代替了,我要如何解决?dxDBGrid图片导出Excel
这个栏位内容显示的是图片,通过下面两个事件加载图片:
procedure TCustPriceFm.dbgDetailPluImageAssignPicture(Sender: TObject;
var Picture: TPicture);
var
ms: TMemoryStream;
jpegimg: TJPEGImage;
begin
ms := TMemoryStream.Create;
try
TBlobField(mdDetailPluImage).SaveToStream(ms);
if ms.Size > 10 then
begin
ms.Seek(0, soFromBeginning);
jpegimg := TJPEGImage.Create;
try
jpegimg.LoadFromStream(ms);
Picture.Graphic := jpegimg;
finally
jpegimg.Free;
end;
end else
Picture.Assign(nil);
finally
ms.Free;
end;
end;procedure TCustPriceFm.dbgDetailPluImageGetGraphicClass(Sender: TObject;
Node: TdxTreeListNode; var GraphicClass: TGraphicClass);
begin
GraphicClass := TGraphicClass(GetClass('TJPEGImage'));
end;
在程序中的显示和操作都是正常的,现在的问题是我想将这个表格的内容导出到Excel文件,使用:
dbgDetail.SaveToXLS(ExcelFileName, True);
导出的结果是这样的:
---------------------------
库存数量 商品图片 成本价格
9 (GRAPHIC) 450
0 (GRAPHIC) 1136
---------------------------
没有具体的图片,栏位中用“(GRAPHIC)”代替了,我要如何解决?dxDBGrid图片导出Excel
自问自答:
后来我用代码打开导出的Excel表格文件,在文件中直接加上图片,处理的还不到位。
这个方法只是我的权宜之计!
还是希望这个问题有人能解决。