2016-07-13 16 views
0

Ich bin neu in der Excel-Automatisierung in C#, so dass ich darüber verwirrt bin. Ich habe ein Excel in ein Dataset importiert und ich habe einige Aktualisierungen im Dataset vorgenommen, wie von mir gefordert. Jetzt möchte ich dieses Dataset auf dieses Eingabeblatt exportieren, damit ich die Aktualisierungen sehen kann, die in dem im Datenblatt abgebildeten Dataset vorgenommen wurden. Was ist der beste Ansatz zum Exportieren von Datensätzen in Excel? unten ist der Code, wie ich das Excel-Blatt Uhr Eröffnung:Exportieren von Datensätzen in Excel-Tabelle

string sConnection = null; 
OleDbConnection oleExcelConnection = default(OleDbConnection); 
sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\input.xls;Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\""; 
oleExcelConnection = new OleDbConnection(sConnection); 
oleExcelConnection.Open(); 

string sqlquery = "Select * From [c:\input.xls]"; 
DataSet ds = new DataSet(); 
OleDbDataAdapter da = new OleDbDataAdapter(sqlquery, oleExcelConnection); 
da.Fill(ds); 
System.Data.DataTable dt = ds.Tables[0]; 

/* 10 to 12 linq queries on dt*/ 

-> now here I want to export the updated dt to input.xls 
+0

Der beste Ansatz wäre Suche nach Beispielen im Internet und versuchen, es selbst anzugehen. Wenn Sie irgendwelche besonderen Probleme haben, zögern Sie nicht, eine Frage zu SO zu stellen. Vielen Dank. – Alex

+0

Ich habe versucht, auf Google sowie auf dieser Website zu suchen. aber die Lösungen, die verfügbar sind, sind alle von Drittanbietern. Ich kann sie nicht in meinem Code verwenden, was meine Einschränkung aus irgendeinem Grund ist. Ich suche nach einer Lösung, die keine Drittanbieterkomponente erfordert. –

+0

'Microsoft.Office.Interop.Excel' ist die einzige Assembly, die Sie benötigen, um dies zu erreichen. – Alex

Antwort

1

nach Forschung von vielen Stunden, fand ich einen Weg Schreiben Sie ein Excel mit Datatable. Meine ursprüngliche Anforderung war, das Originalblatt zu aktualisieren, aber ich denke, ich muss mit der Erstellung eines neuen Ausgabeblatts von Anfang an zufrieden sein. Die Lösung ist unten angegeben:

//open file 
StreamWriter wr = new StreamWriter(@"D:\\Book1.xls"); 
// dt is the DataTable needed to be dumped in an excel sheet. 
try 
{ 

    for (int i = 0; i < dt.Columns.Count; i++) 
    { 
     wr.Write(dt.Columns[i].ToString().ToUpper() + "\t"); 
    } 

    wr.WriteLine(); 

    //write rows to excel file 
    for (int i = 0; i < (dt.Rows.Count); i++) 
    { 
     for (int j = 0; j < dt.Columns.Count; j++) 
     { 
      if (dt.Rows[i][j] != null) 
      { 
       wr.Write(Convert.ToString(dt.Rows[i][j]) + "\t"); 
      } 
      else 
      { 
       wr.Write("\t"); 
      } 
     } 
     //go to next line 
     wr.WriteLine(); 
    } 
    //close file 
    wr.Close(); 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
0

http://www.codeproject.com/Tips/705470/Read-and-Write-Excel-Documents-Using-OLEDB

private void WriteExcelFile() 
{ 
    string connectionString = GetConnectionString(); 

using (OleDbConnection conn = new OleDbConnection(connectionString)) 
{ 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Connection = conn; 

    cmd.CommandText = "CREATE TABLE [table1] (id INT, name VARCHAR, datecol DATE);"; 
    cmd.ExecuteNonQuery(); 

    cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(1,'AAAA','2014-01-01');"; 
    cmd.ExecuteNonQuery(); 

    cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(2, 'BBBB','2014-01-03');"; 
    cmd.ExecuteNonQuery(); 

    cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(3, 'CCCC','2014-01-03');"; 
    cmd.ExecuteNonQuery(); 

    cmd.CommandText = "UPDATE [table1] SET name = 'DDDD' WHERE id = 3;"; 
    cmd.ExecuteNonQuery(); 

    conn.Close(); 
} 
} 

Google ist dein Freund =)

+0

Ich habe versucht, es auf Google sowie dieser Website zu suchen, aber keine befriedigende Antwort gefunden. Eigentlich habe ich ein Dataset 'dt' von 'input.xls' erstellt und einige Updates darin gemacht. Wie exportiere ich den aktualisierten Datensatz an den ursprünglichen Eingang, z. 'input.xls'. Ich habe meine ursprüngliche Frage zur besseren Erklärung aktualisiert. –

+0

Sie ändern Ihre Datei nicht über den Datumsbereich, ändern Sie sie direkt. Es gibt keine Möglichkeit, dies über einen Datensatz zu ändern, von dem ich gerade weiß. Sie könnten versuchen, eine Möglichkeit zu finden, Ihre Datenmenge in eine neue Datei zu schreiben. Aber ich habe keine Ahnung wie. – gismo