将数据表保存到vb.net winform应用程序的excel表中

一年前,我看到一个漂亮的简单代码,它获取一个数据表并将其保存在一个excel文件中。

诀窍是使用networking库(与http的东西),我几乎可以肯定,这是一个stream。

我发现有很多代码有响应,但我不能让它在一个双赢的环境中工作。 还有一个单元格的细胞代码 – 不感兴趣 – 慢。

我想粘贴它作为一个范围或closures。

谢谢

我相信这是你正在寻找的代码:

数据表到Excel

它使用一个HtmlTextWriter

那里有许多组件库将提供这种function。

但是,您可能最简单的方法是将数据输出为CSV文件,然后将数据输出到Excel中。

我喜欢做的是把数据表格放在一个网格,允许用户sorting​​和过滤。 然后他们可以使用剪贴板复制/粘贴到Excel。

 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 

特别感谢杰伊

我的旧代码就像你所说的那样:

至less下次会在这里等我;)

 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"); } } 

您需要将您的数据表转换为ADOlogging集,然后您可以使用Range对象的CopyFromRecordset方法。 见http://www.codeproject.com/KB/database/DataTableToRecordset.aspx