在导出的数字前加‘’怎么实现,我的数据类型都是在表里面定义的,我现在是把DGBridEh表格中的内容导出成Excel文件啊

解决方案 »

  1.   

    我的导出Excel过程是这样的:
    procedure TFrm_Main.ExcelDBGrid(FdbGrid: TDBgrideh; toExcel: Boolean);
    var
      bm: TBook;
      col, row: Integer;
      sline, rownum: string;
      mem: TMemo;
      ExcelApp: Variant;
      reccount, RowCount: Integer;
      MyDBSumList: TDBSumList;
    begin
      reccount := 0;
      MyDBSumList:=TDBSumList.Create(nil);
      MyDBSumList.DataSet := FDBGrid.DataSource.DataSet;
      MyDBSumList.SumCollection.Add;
      MyDBSumList.SumCollection.Items[0].GroupOperation := Gocount;//你可以换成gosum
      MyDBSumList.SumCollection.Items[0].FieldName := FDBGrid.Fields[0].FullName;
      MyDBSumList.Active := True;
      RowCount := trunc(MyDBSumList.SumCollection.Items[0].SumValue);
      MyDBSumList.Free;
      Screen.Cursor := crHourglass;
      FDBGrid.DataSource.DataSet.DisableControls;
      bm := FDBGrid.DataSource.DataSet.GetBook;
      FDBGrid.DataSource.DataSet.First;
      if toExcel then
      begin
        ExcelApp := CreateOleObject('Excel.Application');
        ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
      end;
      mem := TMemo.Create(nil);
      mem.Parent := Fdbgrid.Parent;
      mem.Visible := False;
      mem.Clear;
      sline := '';
      for col := 0 to FDBGrid.Columns.Count - 1 do
        sline := sline + FDBGrid.Columns[col].Title.Caption + #9;
      mem.Lines.Add(sline);
      for row := 1 to RowCount do
      begin
        sline := '';
        for col := 0 to FDBGrid.FieldCount - 1 do
        begin
          sline := sline + FDBGrid.Columns[col].DisplayText + #9;
        end;
        mem.Lines.Add(sline);
        if row mod 150 = 0 then
        begin
          mem.SelectAll;
          mem.CopyToClipboard;
          if toExcel then
          begin
            rownum := 'A' + inttostr(reccount + 1);
            ExcelApp.Workbooks[1].WorkSheets[1].Range[rownum].PasteSpecial;
            mem.Clear;
            Clipboard.Clear;
            reccount := row + 1;
          end;
        end;
        FDBGrid.DataSource.DataSet.Next;
      end;
      mem.SelectAll;
      mem.CopyToClipboard;
      if toExcel then
      begin
        rownum := 'A' + inttostr(reccount + 1);
        ExcelApp.Workbooks[1].WorkSheets[1].Range[rownum].PasteSpecial;
        ExcelApp.Visible := True;
      end;
      FreeAndNil(mem);
      FDBGrid.DataSource.DataSet.GotoBook(bm);
      FDBGrid.DataSource.DataSet.FreeBook(bm);
      FDBGrid.DataSource.DataSet.EnableControls;              
      Screen.Cursor := crDefault;
    end;
      

  2.   

    导出前加 ' 而不是 ’ 
    比始说 写成 ‘'’+要导出的数
    如:cell(1,1)='''+07113244111
      

  3.   

    录制一下设置一个单元格的格式为文本的vba代码,然后翻译成delphi的也可以实现
      

  4.   

    哈哈哈,这个简单,你只要把你的EXCEL中需要输出数字的地方的单元格的格式改边成文本就可以了。在EXCEL中修改。
      

  5.   

    Bear_King(今夜无人入睡) 
    你的方法行不通的,数字前面的0会自动去掉
     lovendII(戒情人) 
    这一句加在哪??我试了好几个地方都不行啊