DataTable/ DataGridView nach Excel exportieren

jimboo

Mitglied
Hi,
möchte gern wissen wie der (1.) Export einer DataTable und einer DataGridView geht.
Und (2.) wie es möglich ist die Daten in einem bestimmten Excel Tabellenblatt abzulegen.

Vielen Dank

(Sprache: VB.NET)
 
Zuletzt bearbeitet:
Hallo jimboo,

habe Deine Frage gelesen.
Ich stehe jetzt genau vor diesem Problem.:confused:
Hast Du eine Lösung gefunden
Wenn ja, kannst du mir den Code zeigen.
Ich wäre Dir sehr Dankbar dafür.

Gib
 
Hallo Nobert,

leider nicht, da es gewünscht ist, die Daten die in einem DataGridview enthalten sind
direkt nach Excel zu übertragen.
Ich weiß, dass man auch von Excel aus eine csv - Datei öffnen kann. Aber dazu muss man als Nutzer wissen wie man da macht. (Tab, Leerzeichen oder Semikolon usw.)
Nee, ich gehe immer vom DAU aus. Also möglichst an alle möglichen Fehlerquellen denken und ausschalten.

Aber trotzdem, danke für die Idee.

Was die Excel - Sache betrifft, ich habe bisher solche Sachen in VB6 gelöst.
Ich versuche mich gerade an VB 2005, und das bereitet mir doch erhebliche Kopfschmerzen. Besonders bei diesem Problem sitze ich zur Zeit besonders auf dem Schlauch.
 
Wenn du ein normales CSV (Semikolon-getrennt verwendest), sollte es keine Probleme beim Öffnen geben. Wenn du dennoch direkt in ein Excel-Sheet schreiben willst, dann wirst du dich wohl mit den Excel-Objekten anfreunden müssen.

Mit der Suche über die .NET Foren solltest du hier entsprechende Lösungsansätze bzw. fertige Lösungen erhalten. Das Thema wurde schon recht oft angesprochen.

Wie du die Daten aus einem DataGridView (wobei ich schon früher ansetzen würde, DataSet zb.) bekommst, weißt du, oder?
 
Das ist die nächste Sache der ich mich dann annehmen werde.

Ich Denke ich werde den Ihnalt des Datagridview in ein DataTable laden.
Um dann Zeile für Zeile die Werte auszulesen.

Aber vielleicht kannst Du mir gerade einen Tipp geben.

Was läuft hier falsch

Ich habe folgenden Code:

Dim dtMem As New DataTable
Dim xls_App As Excel.Application
Dim xls_Mappe As Excel.Workbook
Dim xls_Blatt As Excel.Worksheet
Dim xls_Zelle As Excel.Range

'Füllen der Daten vom Datagridview in DataTable

dtMem = DataGridView2.DataSource

'Starten von Excel

xls_App = New Excel.Application
xls_App = CreateObject("Excel.Application")
xls_App.Visible = False
xls_Mappe = xls_App.Workbooks.Open("E:\Speicherinhalt.xls")
xls_Blatt = xls_Mappe.Worksheets(1)
xls_Zelle = xls_Blatt.Range("A1")

Bei ? bekomme ich folgende Fehlermeldung:
Fehler 1 "New" kann nicht auf einer Schnittstelle verwendet werden.

Ich kann damit so gar nichts anfangen:confused:
 
sorry, die Fragezeichen wurden nicht mit übertragen!

Also, die Fehlermeldung kommt bei "xls_App = New Excel.Application"
 
Hallo Gib,

wie hast du denn Excel eingebunden ? Bzw. welcher Verweis.

Nutze bzw. mache einen Verweis auf die Datei Interop.Excel.dll.
Dann sollte es klappen.

Gruß
Jens
 
Hallo :)
Ich bin gerade auf der Suche wie ich eine Datatable per VB.net in eine Excel-Datei koopieren kann...
Habe auch schon hier und bei google gesucht, aber irgendwie habe ich nicht das passende gefunden...
Vielleicht kann mir hier ja jemand weiterhelfen. Sei es mit einem Code-Bsp. oder mit passenden Links!
Danke schon mal
 
Ich kann leider nur ein Beispiel in c# geben, aber vielleicht hilf das ein wenig weiter.

Wenn alle User Excel 2003 benutzen ist ein Export als XML der schönste Weg. Leider können aber alle älteren Versionen nicht sauber XML einlesen, dann heißt es per Hand zu programmieren.

Code:
private enum MyEnumChar
{
   A = 1, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
}

Code:
using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;

Excel.Application excelApp = new Excel.ApplicationClass();
const int xlWBatWorkSheet = -4167;
Excel.Workbook newWorkbook = excelApp.Workbooks.Add(xlWBatWorkSheet);
Excel.Worksheet excelSheet = (Excel.Worksheet)newWorkbook.Worksheets[1];
excelSheet.Name = "Name der Tabelle";
i = 1;
j = 1;
foreach (DataColumn col in this.dsExport.Tables[0].Columns)
{
    excelSheet.Cells[i, j] = col.ColumnName.ToString();
    excelSheet.get_Range(((MyEnumChar)j).ToString() + i, Type.Missing).Font.FontStyle = "Fett";
    j++;
}
foreach (DataRow row in this.dsExport.Tables[0].Rows)
{
    i++;
    for (j = 1; j <= row.ItemArray.Count(); j++)
    {
        try
        {
            DateTime myDateTime = Convert.ToDateTime(row[j-1]);
            excelSheet.Cells[i, j] = myDateTime.ToString("dd.MM.yyyy");
        }
        catch
            {
                excelSheet.Cells[i, j] = row[j - 1];
            }
    }
}
excelApp.Visible = true;

Bestimmt gibt es schönere Wege, aber das zumindest ist ein Anfang.

Gruß
w_digger
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück