以excel格式将多个单元格从网格复制到剪贴板?

时间:2012-08-11 17:54:13

标签: delphi excel delphi-xe2 clipboard tstringgrid

我正在开发一种工具,它连接到SQL数据库,获取数据集,并在网格中显示该数据。用户必须能够选择一个单元格块(只是矩形)并按 CTRL + C 将其复制到剪贴板。

我该怎么做:

  • 是否可以粘贴到Excel格式?我希望已经有一些现成的东西。它不需要像Excel这样的所有剪贴板功能,只需突出显示一组矩形单元格并将其复制到剪贴板。

  • 如果可以在TStringGrid中完成,我宁愿保留我的功能,但也可以使用支持此功能的组件。

1 个答案:

答案 0 :(得分:6)

您可以尝试将单元格值复制为TAB delimited text,类似于以下代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
  X, Y: Integer;
begin
  S := '';
  for Y := StringGrid1.Selection.Top to StringGrid1.Selection.Bottom do
  begin
    for X := StringGrid1.Selection.Left to StringGrid1.Selection.Right - 1 do
      S := S + StringGrid1.Cells[X, Y] + #9;
    S := S + StringGrid1.Cells[StringGrid1.Selection.Right, Y] + sLineBreak;
  end;
  Delete(S, Length(S) - Length(sLineBreak) + 1, Length(sLineBreak));
  Clipboard.AsText := S;
end;