当前位置:主页>Delphi教程>文章内容
关于DBGRIDEH导出数据到CSV
来源: 作者: 发布时间:2007-04-29  

在通常情况下使用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!

 


 
上一篇:公布TstringGrid增强控件TcbStrGrid源码,带CheckBox的TStringGrid控件   下一篇:数据完整性(数据的似真性而非正确或者错误)
 
  相关文章
·公布TstringGrid增强控件TcbStrGrid源
·数据完整性(数据的似真性而非正确或者
·新世纪的五四运动:程序白话文(1)
·D7下的只能输入数字的控件(类似PB的Ma
·我观MIDAS
·自动化每日构建(二)用Ant来完成java
·delphi一句话帮助
·使DBGrid的列自动调整到何时大小
·Delphi的组件读写机制(一)
·Delphi中避免使用ClassName判断对象的
·使用XMLDocment遍历CSDN论坛帖子回复
·移动无标题栏窗口
 
【关闭窗口】
推荐本站资源
最新文章