2010-12-05 12 views
1

私はDevExpress cxGrid(データベースに接続されています)を使用しているDelphiアプリケーションを持っています。ExcelからcxGridにデータを貼り付けるには

Excelからグリッドにデータをコピー&ペーストできる必要があります。

これは可能ですか?もしそうなら、それを行う方法、どの追加のコンポーネントが必要ですか?

答えて

1

Clipboard.HasFormat(CF_TEXT)でフォーマットを確認してください。

Clipboard.AsTextでテキストを抽出します。

StringList.Text := Clipboard.AsTextで行を分割します。文字列リストの各項目はクリップボードからの行になりました。

スプリットSplit関数を使用して、個々の細胞内へのそれぞれの行:

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

は、おそらくのために行くための最も簡単な形式はテキストとしてそれを引き出し、Textプロパティを通じて文字列リストにそれを固執することです。リスト内の各項目は行全体になり、htタブ文字でマークされた列境界でセルに分割できます。 –

+0

彼は問題の開発者です、彼の仕事です... – ComputerSaysNo

関連する問題