2009-08-20 2 views
3

Vor einem Jahr sah ich einen schönen einfachen Code, der eine Datentabelle erhält und speichert es in einer Excel-Datei.Speichern Sie eine Datentabelle in Excel Blatt in vb.net winform Anwendung

Der Trick war, die Web-Bibliothek (etwas mit http) zu verwenden, und ich bin fast sicher, dass es ein Stream war.

Ich finde eine Menge Code mit Antwort, aber ich kann es nicht in einer Win-Form-Umgebung arbeiten. Es gibt auch eine Zelle für Zelle Code - nicht interessiert - zu langsam.

Ich möchte es als ein Bereich oder etwas in der Nähe einfügen.

Dank

Antwort

2

Ich glaube, dies ist der Code, den Sie suchen:

DataTable to Excel

Es verwendet ein HtmlTextWriter.

+0

Das funktioniert gut, natürlich nicht, ich hab gierig :) Jetzt möchte ich eine Anwendung erstellen, die mehrere Datentabellen in mehreren Excel-Tabellen speichert. Ist es möglich, ein Blatt auszuwählen, um die aktuelle Datentabelle mit dieser Methode zu speichern? z.B. für jede dt in Datentabellen sw = new Stream (savePath + "c.xls") ' ''' + "Blattname" Dim hw Wie Htmltextwriter = New Htmltextwriter (sw) grid.RenderControl (hw) Danke Asaf –

0

Es gibt viele Komponentenbibliotheken gibt, die diese Art von Funktionalität zur Verfügung stellt.

Allerdings könnten Sie wahrscheinlich am einfachsten die Daten als CSV-Datei ausgeben und diese in Excel laden.

0

Was ich tun möchte, ist die Datentabelle in einem Raster zu platzieren, so dass der Benutzer sortieren und filtern kann. Dann können sie die Zwischenablage verwenden, um nach Excel zu kopieren/einfügen.

Private Sub mnuCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuCopy.Click 
    If dgvDisplaySet.GetClipboardContent Is Nothing Then 
     MsgBox("Nothing selected to copy to clipboard.") 
    Else 
     Clipboard.SetDataObject(dgvDisplaySet.GetClipboardContent) 
    End If 
End Sub 
0

Dank all besonders Jay

meinen alten Code genau wie vorgeschlagen ist:

zumindest das nächste Mal hier auf mich warten wird;)

private void cmdSaveToExcel_Click(object sender, EventArgs e) 
     { 
      saveFileDialog1.Filter = "Excel (*.xls)|*.xls"; 
      if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       txtPath.Text = saveFileDialog1.FileName;    
      } 

      // create the DataGrid and perform the databinding 
      System.Web.UI.WebControls.DataGrid grid = new System.Web.UI.WebControls.DataGrid(); 
      grid.HeaderStyle.Font.Bold = true; 


      if (connDBs != null && rtxtCode.Text != "") 
      { 
       DataTable dt; 
       dt = connDBs.userQuery(rtxtCode.Text); // getting a table with one column of the databases names 
       //grdData.DataSource = dt; 
       grid.DataSource = dt; 
       // grid.DataMember = data.Stats.TableName; 

       grid.DataBind(); 

       // render the DataGrid control to a file 
       using (StreamWriter sw = new StreamWriter(txtPath.Text)) 
       { 
        using (HtmlTextWriter hw = new HtmlTextWriter(sw)) 
        { 
         grid.RenderControl(hw); 
        } 
       } 
       MessageBox.Show("The excel file was created successfully"); 
      } 
      else 
      { 
       MessageBox.Show("Missing connection or query"); 
      } 
     } 
Verwandte Themen