VB .NET - DataTable nach Excel exportieren

28. Jan 2009 20:05 (bearbeiten)


Da ich heute ein DataTable möglichst schnell und einfach als Bericht brauchte, habe ich nach einer Möglichkeit gesucht, dieses DataTable nach Excel zu exportieren.

Irgendwo im Internet habe ich dann folgenen, leicht abgeänderten Schnipsel entdeckt (die Quelle weiß ich leider nicht mehr).

Da ich das sicherlich noch häufiger brauche und andere eventuell auch, poste ich den Code mal hier.

Als Referenz muss das Excel COM Objekt zu den Projekt Referenzen hinzugefügt werden.

  1. ''' <summary>
  2. ''' Export a DataTable into an Excel Datasheet
  3. ''' </summary>
  4. ''' <param name="aDataTable"></param>
  5. ''' <param name="aOutputFilename"></param>
  6. ''' <returns></returns>
  7. ''' <remarks></remarks>
  8. Public Shared Function DatatableToExcel(ByVal aDataTable As DataTable,
  9. ByVal aOutputFilename As String) As Boolean
  10.  
  11. Dim app As New Excel.ApplicationClass
  12. Dim wb As Excel.Workbook
  13. Dim ws As Excel.Worksheet
  14.  
  15. wb = app.Workbooks.Add()
  16. ws = wb.ActiveSheet()
  17.  
  18. Dim dc As DataColumn
  19. Dim dr As DataRow
  20. Dim colIndex As Integer
  21. Dim rowIndex As Integer
  22.  
  23. ' Columns erstellen
  24. For Each dc In aDataTable.Columns
  25. colIndex += 1
  26. app.Cells(1, colIndex) = dc.ColumnName
  27. Next
  28.  
  29. ' Rows hinzufügen
  30. For Each dr In dt.Rows
  31. rowIndex += 1
  32. colIndex = 0
  33. For Each dc In aDataTable.Columns
  34. colIndex += 1
  35. app.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
  36. Next
  37. Next
  38.  
  39. ws.Columns.AutoFit()
  40.  
  41. wb.SaveAs(aOutputFilename)
  42. app.Workbooks.Open(aOutputFilename) ' Excel anzeigen wenn fertig exportiert
  43. app.Visible = True
  44.  
  45. Return True
  46. End Function

Update am 01.12.2009:

Da ich immer häufiger auf die obigen Funktionen zugreife, habe ich meine Klasse ExcelTools mittlerweile etwas ergänzt. Wer möchte, kann sich den Quellcode hier herunter laden.

Tags ¦ , , , , und

Projekt Vorschau

23. Jan 2009 16:01 (bearbeiten)


Hier eine kleine Vorschau des Projekts an dem ich gerade arbeite.

Wie man hoffentlich sieht, handelt es sich um einen App Launcher, also so etwas wie Launchy. Wenn das Projekt fertig ist, soll das Programm aber mehr können, als nur Programme zu öffnen. Ich habe folgendes geplant:

  • Starten, Beenden (und Bearbeiten) von Programmen
  • Öffnen und Bearbeiten von Dateien
  • Arbeiten mit markierten Dateien, Ordnern und Text
  • Index Unterstützung, d. h. eigene Indexer können beliebige Objekte (wie Mails, Termine, usw.) indexieren, mit denen dann gearbeitet werden kann.
  • Plugin Unterstützung, d. h. eigene Aktionen für Objekte können geschrieben werden. Beispielsweise könnte ein Mail Plugin E-Mails an indexierte Kontakte versenden, ein Packer-Plugin könnte markierte Ordner zipppen und via FTP-Plugin hochladen
  • Skin Unterstützung
  • Einfache(ste) Bedienung

Das wichtigste an diesem Programm wird die einfache Bedienung sein (auch wenn ich das als letzten Punkt in der Liste aufgeführt habe). So soll es mit nur wenigen Tastendrücken möglich sein, beispielsweise in Windows markierte Dateien zu zippen, zu verschlüsseln und anschließend auf einen FTP Server zu laden.

Dabei werden Plugins miteinander verknüpft die unterschiedliche Objekte an das nächste vom Benutzer ausgewählte Plugin zurückliefern.

Gemäß obigem Beispiel:

Ausgewählte Dateien -> Plugin: ZIP -> Gezippte Dateien -> Plugin: Verschlüsselung -> Verschlüsselte Dateien -> Plugin: FTP -> Auswahl FTP-Verbindungsdaten -> Fertig.

Wer Quicksilver für den Mac kennt, wird sicherlich viele Gemeinsamkeiten entdecken, was daran liegt, dass Quicksilver für mich eine Art inspirierende Vorlage war (was es für Windows Alternativen zu Quicksilver gibt, hat Lifehacker übrigens in diesem Artikel zusammengefasst).

Bis das alles so funktioniert wie ich das gerne hätte, muss ich aber noch einiges an Arbeit in das Projekt stecken. Ein Schritt in diese Richtung ist allerdings bereits gemacht.

VB .NET - Displayname / Beschreibung einer Datei ermitteln

21. Jan 2009 15:12 (bearbeiten)


Ich wollte für ein Programm an dem ich gerade arbeite statt der Dateiendung die Beschreibung zu der Dateiendung anzeigen.

Windows selbst zeigt diese Beschreibung beispielsweise in der Statusleiste des Explorers, wenn man auf eine bekannte Datei klickt. Beispielsweise bei "*.MOV" Dateien wäre die Anzeige (je nachdem mit welchem Programm die Endung verknüpft ist) "VLC media file (.mov)" oder "Quicktime Movie".

Nunja, als ich noch mit Delphi programmierte hätte ich hierzu die Shell32 SHGetFileInfo Funktion verwendet, doch unter .NET binde ich ungerne DLLs ein, also habe ich mir eine Funktion gebastelt, die die Info aus der Registry ausliest.

  1. ''' <summary>
  2. ''' Retrieve the Description/Displayname for a FileExtension
  3. ''' </summary>
  4. ''' <param name="aExtension">The Extension with a leading dot</param>
  5. ''' <returns>The Description of an Extension</returns>
  6. ''' <remarks></remarks>
  7. Public Shared Function GetDisplayNameFromExtension(ByVal aExtension As String) As String
  8.  
  9. If aExtension = String.Empty Or Not aExtension.StartsWith(".") Then Return String.Empty
  10.  
  11. ' First the get the key for the extension
  12. ' Extension is for example ".MOV", Key is "VLC.mov"
  13. Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(aExtension)
  14.  
  15. If key IsNot Nothing Then
  16.  
  17. ' Then we look in the sub key for the description
  18. Dim SubkeyName As String = key.GetValue(String.Empty)
  19. Dim SubKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(SubkeyName)
  20. If SubKey IsNot Nothing Then
  21. Return SubKey.GetValue(String.Empty)
  22. End If
  23.  
  24. End If
  25.  
  26. Return String.Empty
  27. End Function

Beispielaufruf:

  1. Msgbox(GetDisplayNameFromExtension(".zip"))

Download <> Kauf

20. Jan 2009 23:56 (bearbeiten)


Ein US Richter hat glücklicherweise gerade bestätigt was für jeden normaldenkenden Menschen schon lange klar war:

17.000 illegale Downloads entsprechen nicht 17.000 potentiellen Käufen

via Slashdot bzw. Ars Technica.

Tags ¦ , und

Paul Blart - Mall Cop

19. Jan 2009 14:55 (bearbeiten)


Eine neue Komödie mit Kevin James (bekannt aus King of Queens) startete letzten Freitag den 16. Januar 2009 in den US Kinos.

Am 9. April wird "Der Kaufhaus Cop" dann in den deutschen Kinos zu sehen sein.

Der Trailer lässt auf eine wirklich lustige Komödie im Stil von "Kevin allein zu Haus" hoffen, obwohl die IMDB Bewertung mit 5.5 von 10 nicht sonderlich gut aussieht, aber was heisst das schon.

Weiterlesen »

Tags ¦ , , und

Crank 2 - High Voltage Trailer

19. Jan 2009 13:06 (bearbeiten)


Es ist beinahe drei Jahre her, seit sich Chev Chelios so mit Adrenalin vollpumpen musste, dass er es über die knapp anderthalb Stunden Film schaffte.

Am 16. April ist es dann endlich soweit, da kommt der zweite Crank Teil (mit dem netten Zusatz: "He was dead...But he got better") in die deutschen Kinos.

Mit an Bord sind unter anderem David Carradine (der unter anderem in Death Race und Kill Bill mitwirkte) und jede Menge Stuntmen.

Der Trailer lässt auf einen guten Nachfolger im Stil des ersten Teils hoffen. Da auch die selben Regisseure mit von der Partie sind, kann eigentlich nicht mehr viel daneben gehen.Ich bin auf jeden Fall gespannt...

Weiterlesen »

Tags ¦ , , und

Worst Night Ever

17. Jan 2009 16:28 (bearbeiten)


Wie kann die schlimmste Nach ablaufen? Im folgenden eine mögliche Situation.

so I was with my friend bryan the other night in a bar well he got really drunk and said he was gonna puke so i helped him walk to the toilet all the stalls were occupied lol bryan is a rugby player... so a big guy so he fucking KICKS one of the stall doors open and there's this guy in there taking a shit hahahahahaha and bryan throws up ALL OVER HIM then (this is genius) bryan thinks 'oh shit... if i were taking a shit and someone came in and was sick all over me, i'd want to fuck him up... so i'd better hit him first' so he fucking SMACKS this guy in the face and runs away imagine being that guy... WORST NIGHT OUT EVER

Original hier und mehr da.

Tags ¦ , , und