vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Export DataTable in Excel - Problem beim Speichern 
Autor: xyron
Datum: 14.09.12 10:01

Hi

Ich führe einen Datenexport von meinem Programm ins Excel aus. Der Vorgang funktioniert grösstenteils, jedoch wird das File nicht immer korrekt gespeichert.

Das Problem tretet auf, wenn ich ein neues File abgspeichern will. Obwohl der Code erfolgreich durchlaufen wird und der Speichervorgang mit der Zeile "oExcelApp.ActiveWorkbook.Save()" eingeleitet wird, erscheint anschliessend im Excel beim Speichern folgende Meldung:

problem.xls kann Merkmale enthalten, die mit Text (Tabstopp-getrennt) Nicht kompatibel sind. Möchten Sie die Arbeitsmappe in diesem Format speichern?

Wenn ich mit "Ja" bestätige wird dennoch nicht gespeichert. Wenn ich anschliessend Excel schliessen möchte werde ich gefragt, ob ich die Änderungen speichern möchte. Betätige ich mit "Ja", wird nicht automatisch gespeichert, sondern es erscheint der "Speichern unter..." Dialog und ich muss den Dateityp von "Text (Tabstopp-getrennt)(*.txt)" auf "Microsoft Excel-Arbeitsmappe (*.xls)" ändern. Da diese Datei bereits besteht, werde ich anschliessend noch gefragt, ob ich die Datei ersetzen möchte.

Mein Wunsch wäre es einfach Speichern zu klicken, ohne dass diese Meldungen oder der "Speichern unter..." Dialog erscheint. Wenn keine Änderungen am File gemacht wurden, sollte diese Meldung gar nicht erst erscheinen, da ich im Code bereits gespeichert habe.

Hier mein Code:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        ExcelExport(m_oDataTable, "C:\Dokumente und" & _
        "Einstellungen\user\Desktop\problem.xls", Trim(txtSheetName.Text), True)
    End Sub
 
Private Sub ExcelExport(ByVal oDataTable As DataTable, ByVal sPath As String, _
  ByVal sSheetname As String, ByVal bNewFile As Boolean) ', ByVal sNewFilename 
' As String)
        Dim iRowsTotal As Integer
        Dim iColsTotal As Integer
        Dim oExcelApp As Object
        oExcelApp = CreateObject("Excel.Application")
        System.Windows.Forms.Cursor.Current = _
          System.Windows.Forms.Cursors.WaitCursor
 
        Try
            If sPath = String.Empty Then
                Exit Sub
            End If
 
            'File erstellen
            If Not File.Exists(sPath) Then
                Dim fs As FileStream = File.Create(sPath)
                fs.Close()
            End If
 
            'Excel File öffnen
            oExcelApp.Workbooks.Open(Filename:=sPath, ReadOnly:=False, _
              Editable:=True)
 
            'Neues Tabellenblatt einfügen 
            oExcelApp.Worksheets.Add(After:=oExcelApp.Worksheets( _
              oExcelApp.Worksheets.Count)).Name = sSheetname
 
            If bNewFile Then
                'Alle bestehenden Tabellenblätter, mit Ausnahme des letzten 
                ' werden, gelöscht 
                For i As Integer = 1 To oExcelApp.Worksheets.Count - 1 'Index 
                ' beginnt bei 1
                    oExcelApp.Worksheets(i).Delete()
                Next
            End If
 
            'Excel wird nicht in der Taskleiste angezeigt
            oExcelApp.Visible = False
 
            'Columns und Rows werden gezählt
            iRowsTotal = oDataTable.Rows.Count - 1
            iColsTotal = oDataTable.Columns.Count - 1
 
 
            'Columns werden auf dem Excelsheet dargestellt...
            For i As Integer = 0 To iColsTotal
                oExcelApp.Cells(1, i + 1).Value = oDataTable.Columns(i).Caption
                pbExport.PerformStep()
            Next
 
            '... und auch die Rows
            For i As Integer = 0 To iRowsTotal - 1
                For j As Integer = 0 To iColsTotal - 1
                    oExcelApp.Cells(i + 2, j + 1).value = oDataTable.Rows( _
                      i).Item(j)
                Next j
                pbExport.PerformStep()
            Next i
 
            'Titelzeilen werden Fett formatmiert und Grösse auf 10 pt gesetzt
            oExcelApp.Rows("1:1").Font.FontStyle = "Bold"
            oExcelApp.Rows("1:1").Font.Size = 10
 
            'Spalten und Zellenbreiten werden automatisch angepasst
            oExcelApp.Cells.Columns.AutoFit()
            oExcelApp.Cells.Select()
            oExcelApp.Cells.EntireColumn.AutoFit()
 
            'Erste Zelle wird markiert
            oExcelApp.Cells(1, 1).Select()
 
 
            'Speichern
            oExcelApp.ActiveWorkbook.Save()
 
            'Excel wird nun angezeigt
            oExcelApp.Visible = True
 
        Catch ex As Exception
	    MessageBox.Show(ex.Message)
        Finally
            System.Windows.Forms.Cursor.Current = _
              System.Windows.Forms.Cursors.Default
            oExcelApp = Nothing
        End Try
Was mache ich falsch?

MfG xyron
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Export DataTable in Excel - Problem beim Speichern2.157xyron14.09.12 10:01
Re: Export DataTable in Excel - Problem beim Speichern1.152effeff14.09.12 10:58
Re: Export DataTable in Excel - Problem beim Speichern1.122xyron19.09.12 10:13

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel