如何轻松地将dataGridView保存到.XLS或.CSV,而不使用saveFileDialog C#Winforms提示用户?

如何轻松地将dataGridView保存到.XLS或.CSV,而不使用saveFileDialog C#Winforms提示用户?,c#,winforms,excel,datagridview,C#,Winforms,Excel,Datagridview,我正在进行一个项目,该项目允许用户在C#Winform dataGridView中查看MySQL数据库表 我希望用户能够通过单击按钮将dataGridView内容保存到c:\temp\export.xls,而无需使用saveFileDialog提示用户(只要它可以绕过任何用户输入并另存为c:\temp\export.xls,就可以使用saveFileDialog)。我需要帮助修改第二部分以绕过用户输入 我用来保存数据的代码分为两部分(第二部分中的代码提示用户保存位置,但我想省略它并使其自动):

我正在进行一个项目,该项目允许用户在C#Winform dataGridView中查看MySQL数据库表

我希望用户能够通过单击按钮将dataGridView内容保存到c:\temp\export.xls,而无需使用saveFileDialog提示用户(只要它可以绕过任何用户输入并另存为c:\temp\export.xls,就可以使用saveFileDialog)。我需要帮助修改第二部分以绕过用户输入

我用来保存数据的代码分为两部分(第二部分中的代码提示用户保存位置,但我想省略它并使其自动):


我想修改第二部分以自动保存@c:\temp\export.xls。希望我已经很好地解释了我的意图。我查看了NPOI图书馆,但不确定这是否是我需要的。如果出于某种原因,用户没有安装excel,最好在后台进行

为什么不这样做呢,或者如果你想在后台运行它,你可以在这里查看如何使用后台工作者类


我想覆盖上一个文件,所以这不是问题,但是谢谢你的提醒。我已经试过了,但它似乎仍然会提示保存位置/文件名。我做错什么了吗?您是否仍在使用“保存文件”对话框,我在您的ToCsv方法中没有看到任何提示任何人输入内容的内容。注释掉有关SAveFileDialog的任何内容。使您的按钮单击方法与我的类似。我有一个不同的按钮,它确实会提示用户保存位置等…但它是在按钮单击事件中。不确定通过单击一个完全独立的按钮来运行这些命令。你认为它可能编译错误,而且永远不会更新吗?哇。我不确定这笔交易是什么,但现在使用ToCsV(dataGridView1,@“c:\temp\export.xls”);谢谢你,伙计!我已经试过了,但没用。第二次是一种魅力!你这个男人
    private void ToCsV(DataGridView dGV, string filename)
    {
        string stOutput = "";
        // Export titles:
        string sHeaders = "";

        for (int j = 0; j < dGV.Columns.Count; j++)
            sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
        stOutput += sHeaders + "\r\n";
        // Export data.
        for (int i = 0; i < dGV.RowCount - 1; i++)
        {
            string stLine = "";
            for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
                stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
            stOutput += stLine + "\r\n";
        }
        Encoding utf16 = Encoding.GetEncoding(1254);
        byte[] output = utf16.GetBytes(stOutput);
        FileStream fs = new FileStream(filename, FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);
        bw.Write(output, 0, output.Length); //write the encoded file
        bw.Flush();
        bw.Close();
        fs.Close();
    } 
    private void button4_Click(object sender, EventArgs e)
    {

        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Excel Documents (*.xls)|*.xls";
        sfd.FileName = "export.xls";
        if (sfd.ShowDialog() == DialogResult.OK)
        {
          // ToCsV(dataGridView1, @"c:\temp\export.xls");   ???????
           ToCsV(dataGridView1, sfd.FileName); 
        }  
private void button4_Click(object sender, EventArgs e)
{
   //I would probabaly generate a time stamped Filename so not to over write existing files
   // You can use something like a background worker to run this in the back ground
   ToCsV(dataGridView1, @"c:\temp\export.xls");   
}