您的位置:首页 > 其它

关于DBGRIDEH导出数据到CSV

2008-04-30 20:03 363 查看
在通常情况下使用DBGRIDEH导出的到CSV中的数据是这个样子的
"a","b","c"
可能我们并不希望它这样显示,有可能希望它显示成种状态
a,b,c
如果想这样,我们可以修改DBGRIDEH里面的DBGRIDEHImpExp.pas文件
具体修改如下:增加一个自己的导出到CSV的类
{ TMyDBGRIDEHExportAsCVS } TMyDBGRIDEHExportAsCVS = class(TDBGRIDEHExportAsText) private FSeparator: Char; protected procedure CheckFirstCell; override; procedure WriteTitle(ColumnsList: TColumnsEhList); override; procedure WriteDataCell(Column: TColumnEh; FColCellParamsEh: TColCellParamsEh); override; procedure WriteFooterCell(DataCol, Row: Integer; Column: TColumnEh; AFont: TFont; Background: TColor; Alignment: TAlignment; Text: String); override; public constructor Create; override; property Separator: Char read FSeparator write FSeparator; end;{ TMyDBGRIDEHExportAsCVS }procedure TMyDBGRIDEHExportAsCVS.CheckFirstCell;var s: String;begin if FirstCell = False then begin s := Separator; StreamWriteString(Stream, s);// Stream.Write(PChar(s)^, Length(s)) end else FirstCell := False;end;constructor TMyDBGRIDEHExportAsCVS.Create;begin Separator := ','; inherited Create;end;procedure TMyDBGRIDEHExportAsCVS.WriteDataCell(Column: TColumnEh; FColCellParamsEh: TColCellParamsEh);var s: String;begin CheckFirstCell; s := FColCellParamsEh.Text; StreamWriteString(Stream, s);// Stream.Write(PChar(s)^, Length(s));end;procedure TMyDBGRIDEHExportAsCVS.WriteFooterCell(DataCol, Row: Integer; Column: TColumnEh; AFont: TFont; Background: TColor; Alignment: TAlignment; Text: String);var s: String;begin CheckFirstCell; s := Text; StreamWriteString(Stream, s);// Stream.Write(PChar(s)^, Length(s));end;procedure TMyDBGRIDEHExportAsCVS.WriteTitle(ColumnsList: TColumnsEhList);var i: Integer; s: String;begin CheckFirstRec; for i := 0 to ColumnsList.Count - 1 do begin s := ColumnsList[i].Title.Caption; if i <> ColumnsList.Count - 1 then s := s + Separator; StreamWriteString(Stream, s);// Stream.Write(PChar(s)^, Length(s)); end;end;

Good luck!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: