2010-12-05 71 views
1

J'ai une application Delphi en utilisant DevExpress cxGrid (qui est connecté à la base de données).Comment coller des données à partir d'Excel dans cxGrid

Je dois être en mesure de copier-coller des données d'Excel dans la grille.

Est-ce possible? Si oui, comment le faire, de quels composants supplémentaires ai-je besoin?

Répondre

1

Vérifiez le format avec Clipboard.HasFormat(CF_TEXT).

Extrayez le texte avec Clipboard.AsText.

Diviser en rangées avec StringList.Text := Clipboard.AsText. Chaque élément de la liste de chaînes est maintenant une ligne du presse-papiers.

Fendez chaque ligne dans des cellules individuelles en utilisant une fonction de 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

cela peut être réalisé plus facile et plus élégant en utilisant une TStringList et en assignant le caractère séparateur, puis définissez la longueur du tableau au nombre de la variable TStringList ET que juste copier chaque élément à son élément de chaîne correspondant dans le tableau ... ou vous pouvez simplement accéder à chaque élément de la liste de chaînes – ComputerSaysNo

+0

@Dorin Duminica Excel données est 2D, votre suggestion ne l'aplatirait-il pas simplement dans un tableau 1D? –

+0

@Dorin Duminica Je soupçonne que vous faites référence à la propriété Delimiter, mais cela ne fonctionnera pas en général –

0

Vous pouvez vérifier le contenu du presse-papiers après avoir copié le contenu de l'application Excel. puis, sur le raccourci CTRL + V, vous allez analyser le contenu du presse-papiers et définir les données dans leurs cellules respectives.

+0

probablement le format le plus facile d'aller est de le sortir sous forme de texte et de le coller dans une liste de chaînes à travers la propriété Text. Chaque élément de la liste sera une ligne entière que vous pourrez ensuite diviser en cellules aux limites des colonnes qui sont marquées par des caractères de tabulation ht. –

+0

il est le développeur en question, c'est son travail ... – ComputerSaysNo