Daten aus Grid in Zwischenablage kopieren, inkl. Formatierung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von bawi.

    Daten aus Grid in Zwischenablage kopieren, inkl. Formatierung

    Hallo an Alle,

    ich habe ein kleines Problem beim Kopieren von Daten aus einem DataGrid in die Zwischenablage.

    Und zwar lade ich Daten von einem MySQL-Server in eine Datatable und binde diese ans Grid.
    Zum Kopieren des markierten Bereichs in die Zwischenablage verwende ich folgenden Code:

    VB.NET-Quellcode

    1. Grid_Datenbankansicht.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
    2. Clipboard.SetDataObject(Grid_Datenbankansicht.GetClipboardContent)


    Die Daten können dann auch problemlos z.B. in Excel eingefügt werden, aber die Formatierung der Zellen wird nicht kopiert.
    Wenn eine Zelle im Grid grün gefärbt ist, dann soll das auch so mitkopiert werden.

    Kennt einer von euch eine (performante) Möglichkeit, wie man das realisieren kann?

    Danke schon einmal!
    @bawi:: Willkommen im Forum. :thumbup:
    In diesem Falle musst Du im Programm eine Excel-Zelle nachbilden und diese Informationen einzeln im Code übertragen.
    Ich nehme mal an, dass Excel da ein besonderes Excel-Clipboard-Datenformat registriert hat, an das Du wohl nicht rankommst.
    Also füge den Inhalt per Code in die Excel-Zelle ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @bawi:: Willkommen im Forum. :thumbup:
    In diesem Falle musst Du im Programm eine Excel-Zelle nachbilden und diese Informationen einzeln im Code übertragen.
    Ich nehme mal an, dass Excel da ein besonderes Excel-Clipboard-Datenformat registriert hat, an das Du wohl nicht rankommst.
    Also füge den Inhalt per Code in die Excel-Zelle ein.

    Danke :)

    Ja, so ähnlich habe ich mir das auch gedacht.
    In dem Grid sind nur wirklich viele Daten. Also mehr als 10.000 Reihen mit je 60 Spalten sind keine Seltenheit und das in zwei For-Each-Schleifen zu durchlaufen und die Zellen (inkl. Formatierung) einzeln zu kopieren würde ziemlich lange dauern.
    Deswegen habe ich gehofft, dass es da vielleicht eine Funktion im Framework gibt. So muss ich mir halt noch was einfallen lassen...

    Trotzdem Danke ;)
    @bawi:: Du musst nicht den ganzen Post vor Dir zitieren, das ist nicht schön und außerdem unerwünscht.
    Probier mal, Deine Tabelle iwie im Excel-Format oder CSV oder wie auch immer zu speichern und dann von Excel einlesen zu lassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sorry, kommt nicht mehr vor ;)

    Einen CSV-Export mache ich bereits. Der Funktioniert auch ganz gut, nur kann man in CSV-Dateien halt auch keine Formatierungen speichern.

    Ich probiers mal mit XML-Dateien bzw. XLS(X)-Dateien (via COM-Interop)...
    Ist dann zwar nicht ganz so komfortabel, wie Copy & Paste, muss aber ausreichen.

    Danke :thumbup: