一年前,我看到一个漂亮的简单代码,它获取数据表并将其保存在excel文件中。
诀窍是使用网络库(带有http的东西),我几乎可以肯定它是一个流。
我发现很多代码都有响应,但我无法在win-form环境中运行。 还有一个单元格细胞代码 - 不感兴趣 - 慢。
我想将其粘贴为范围或近距离。
由于
答案 0 :(得分:2)
答案 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