2010-12-05 1 views
1

DevExpress cxGrid (데이터베이스에 연결됨)를 사용하는 Delphi 응용 프로그램이 있습니다.Excel에서 데이터를 cxGrid에 붙여 넣는 방법

Excel에서 그리드로 데이터를 복사하여 붙여 넣을 수 있어야합니다.

이것이 가능합니까? 그렇다면 어떻게해야합니까? 어떤 추가 구성 요소가 필요합니까?

답변

1

Clipboard.HasFormat(CF_TEXT)으로 형식을 확인하십시오.

Clipboard.AsText으로 텍스트를 추출하십시오.

행을 StringList.Text := Clipboard.AsText으로 분할하십시오. 문자열 목록의 각 항목은 이제 클립 보드의 행입니다.

분할 스플릿 기능을 사용하여 개별 세포로 각 행 : 아마

function Split(const s: string; Separator: char): TStringDynArray; 
var 
    i, ItemIndex: Integer; 
    len: Integer; 
    SeparatorCount: Integer; 
    Start: Integer; 
begin 
    len := Length(s); 
    if len=0 then begin 
    Result := nil; 
    exit; 
    end; 

    SeparatorCount := 0; 
    for i := 1 to len do begin 
    if s[i]=Separator then begin 
     inc(SeparatorCount); 
    end; 
    end; 

    SetLength(Result, SeparatorCount+1); 
    ItemIndex := 0; 
    Start := 1; 
    for i := 1 to len do begin 
    if s[i]=Separator then begin 
     Result[ItemIndex] := Copy(s, Start, i-Start); 
     inc(ItemIndex); 
     Start := i+1; 
    end; 
    end; 
    Result[ItemIndex] := Copy(s, Start, len-Start+1); 
end; 
+1

TStringList를 사용하고 구분 기호 문자를 할당 한 다음 배열의 길이를 TStringList 변수의 수로 설정하면 각 항목을 배열의 해당 문자열 항목에 복사하거나 문자열 목록의 각 항목에 액세스 할 수 있습니다. – ComputerSaysNo

+0

@Dorin Duminica Excel 데이터는 2D이므로 제안을 1D 배열로 단순화하지 않습니까? –

+0

@Dorin Duminica 당신이 구분 기호 속성을 참조하는 것으로 의심되지만 일반적으로 작동하지 않습니다. –

0

Excel 응용 프로그램에서 콘텐츠를 복사 한 후 클립 보드의 내용을 확인할 수 있습니다. CTRL + V 바로 가기에서 클립 보드의 내용을 파싱하고 각각의 셀에 데이터를 설정합니다.

+0

가장 쉬운 형식 갈 텍스트로 그것을 밖으로 끌어와 텍스트 속성을 통해 문자열리스트에 충실하는 것입니다. 목록의 각 항목은 ht 탭 문자로 표시된 열 경계에서 셀로 분리 할 수있는 전체 행이됩니다. –

+0

그는 문제의 개발자이며, 자신의 직업입니다 ... – ComputerSaysNo