2012-08-11 5 views
4

SQL 데이터베이스에 연결하고 데이터 집합을 가져온 도구에서 작업 중이며 해당 데이터를 표에 표시합니다. 사용자는 셀 블록 (직사각형)을 선택하고 CTRL + C을 눌러 클립 보드로 복사 할 수 있어야합니다. 엑셀에 붙여 넣을 수있는 형식으로여러 셀을 그리드에서 클립 보드로 Excel 형식으로 복사 하시겠습니까?

  • :

    어떻게 이렇게합니까? 이미 기성품이 있기를 바라고 있습니다. Excel과 같은 모든 클립 보드 기능이 필요하지 않으며 사각형 셀 그룹을 강조 표시하고 클립 보드에 복사하기 만하면됩니다.

  • TStringGrid에서 수행 할 수 있다면 내 기능을 유지하는 것을 선호하지만이 기능을 지원하는 구성 요소에서도 작동 할 수 있습니다.

+1

@TLama은 (그가 엑셀가 설치되어 있지 않기 때문에 그가 그것을 삭제 작동 답변을 게시 테스트). 나는 그것을 시험해 보았고, 잘하면이 주석을 보았고 그것을 삭제를 취소하기 위해 되돌아 올 것이다. –

+0

@Ken, 테스트 해 주셔서 감사합니다! 나는 코드를 수정하고 (최소한 내가 찾은 것) 포스트를 삭제 취소했다. – TLama

+0

필자는 Excel에 삽입하고 대부분의 경우 태블릿을 RTF 또는 HTML 테이블로 만들어 클립 보드에 복사해야한다고 생각합니다. 아마 HTML 구조가 더 쉽습니다. –

답변

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; 
+2

나는 대답을 게시하려고했는데, 너를보고 왜 그것이 삭제되었는지 궁금해했다. 그런 다음 Excel이 없다는 것에 대한 메모를 보았으므로 Excel에서 클립 보드에서 탭 텍스트를 올바르게 가져올 지 확인했습니다. 그렇습니다. 그래서 대답을 게시하는 것이 불공평했을 것입니다. :-) –

+1

질문은 특히 Ctrl + C를 사용하여 'TStringGrid'에서 사용자가 Excel 범위에 붙여 넣을 수있는 클립 보드에 복사하는 것에 관한 것입니다. 다른 형식은 필요 없습니다. 귀하의 코드는 그 목적을 위해 잘 작동합니다. :-) –

+1

@ Jerry, 또 다른 방법은 자연스러운 Excel 형식 인 XLS를 사용하는 것입니다. Excel 파일 ['format description'] (http://www.openoffice.org/sc/excelfileformat)을 기반으로 ['this''] (http://delphi.cz/img/nativexls/uNativeXLSExport.txt)를 발견했습니다. .pdf). 'StringGridToXLS'라는 문자열 그리드를 XLS로 내보내는 절차가 있습니다 (TXLSWriter.FStream 멤버의 내용을 파일로 복사하는 대신 클립 보드로 복사하는 목적으로) t verify it ... – TLama

관련 문제