0

TZColorStringGrid (Delphi の TStringGrid の子孫) を使用して作成した一種のレポートがあり、doc、xls、pdf にエクスポートし、このレポートを印刷できるようにしたいと考えています。だから私はこれを行う方法について最後の 2 日間考えています。

ここで、TStringGrid のコンテンツから TClientDataSet を作成する方法について誰かが質問した投稿を見つけまし 。それを読んだときはうれしくて、これで終わりだと自分に言い聞かせましたが、DelphiXe2 にクイック レポートがないことに気付いたので、このソリューションは失敗しました。Fast Reports で同様の方法でそれを行うことはできますか?

問題を解決するために私が考えた 2 番目の方法は、JVCL エクスポート コンポーネントを使用することですが、エクスポートは DBGrid に対してのみ機能し、TStringGrid に対しては機能しません。したがって、TStringGrid からその TClientDataSet を作成し、TClientDataSet を DbGrid にリンクしてエクスポートする必要もあると思います。しかし、その ClientDataSet を作成する方法がわかりません。下の画像のように TStringGrid 構造を保持するかどうか

後で編集: TJvPrint は stringgrid を印刷するための JVCL のコンポーネントであり、TClientDataSet を必要とせずに機能しますが、テーブル構造を保持しません (結合されたセル、フォントの書式設定などを意味します)

クリックして画像をズーム

私の問題を解決できると考えている 3 つ目の方法は、TStringGrid をエクスポートする無料のコンポーネントを見つけることです。SMExport を 1 つ見つけましたが、無料ではなく、投資するお金がまったくありません (残念ながら私はまだ学生です)。TStringGrid のエクスポートに使用できる無料のコンポーネントを他に知っていますか?

誰かが TStringGrid をエクスポートする別の解決策を考えていて、それを共有したい場合は、私は感謝します!

4

1 に答える 1

1
procedure TForm1.exportClick(Sender: TObject);
var
  i: Integer;
  CSV: TStrings;
  SD: TSaveDialog;
  FileName: string;
begin
  SD := TSaveDialog.Create(nil);
  try
    SD.Filter := 'CSV (*.csv)|*.CSV';
    // filters file types to only allow you to select CSV files

    if SD.Execute then
    begin
      FileName := SD.FileName;
      if ExtractFileExt(FileName) <> '.csv' then
        FileName := FileName + '.csv';

      Screen.Cursor := crHourGlass;
      try
        CSV := TStringList.create;
        try
          for i := 0 to StringGrid1.RowCount - 1 do
            CSV.Add(StringGrid1.Rows[i].CommaText);

          CSV.SaveToFile(FileName);
        finally
          CSV.free;
        end;
      finally
        Screen.Cursor := crDefault;
      end;
    end;

  finally
    SD.Free;        
  end;
end;

試してみてください。結合されたセルが保持されるかどうかわかりません

于 2013-05-12T20:53:03.510 に答える