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

时间:2009-08-20 14:37:30

标签: c# vb.net winforms excel datatable

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

诀窍是使用网络库(带有http的东西),我几乎可以肯定它是一个流。

我发现很多代码都有响应,但我无法在win-form环境中运行。 还有一个单元格细胞代码 - 不感兴趣 - 慢。

我想将其粘贴为范围或近距离。

由于

5 个答案:

答案 0 :(得分:2)

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

DataTable to Excel

它使用HtmlTextWriter

答案 1 :(得分:0)

有许多组件库可以提供这种功能。

但是,您可以,最简单地将数据输出为CSV文件并将其加载到Excel中。

答案 2 :(得分:0)

我喜欢做的是将数据表放在一个允许用户排序​​和过滤的网格中。然后他们可以使用剪贴板复制/粘贴到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

答案 3 :(得分:0)

特别感谢周杰伦

我的旧代码就像你建议的那样:

至少下次它会在这里等我;)

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

答案 4 :(得分:0)

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