خروجی Excel گرفتن از DataGridView

سلام دوستان. این کد رو یکی از کاربران عزیز به نام کاربری “پیام” برای گرفتن خروجی اکسل از دیتاگرید پیشنهاد دادن.
ابتدا یک کنترل دیتاگرید و یک دکمه بر روی فرم قرار دهید و سپس در قسمت تعریف فضاهای نام فضاهای نامی زیر را وارد کنید :

using System;
using System.Text;
using System.Windows.Forms;
using System.IO;

از متد زیر برای گرفتن خروجی اکسل استفاده کنید :

private void ToCsV(DataGridView DataGridView1, string filename)
{
    string StringOutPut = "";
    string StringHeaders = "";

    for (int j = 0; j < DataGridView1.Columns.Count; j++)
        StringHeaders = StringHeaders.ToString() + Convert.ToString(DataGridView1.Columns[j].HeaderText) + "\t";
    StringOutPut += StringHeaders + "\r\n";
    for (int i = 0; i < DataGridView1.RowCount - 1; i++)
    {
        string StringLine = "";
        for (int j = 0; j < DataGridView1.Rows[i].Cells.Count; j++)
            StringLine = StringLine.ToString() + Convert.ToString(DataGridView1.Rows[i].Cells[j].Value) + "\t";
        StringOutPut += StringLine + "\r\n";
    }
    Encoding utf16 = Encoding.GetEncoding(1254);
    byte[] output = utf16.GetBytes(StringOutPut);
    FileStream FileStream1 = new FileStream(filename, FileMode.Create);
    BinaryWriter BinaryWriter1 = new BinaryWriter(FileStream1);
    BinaryWriter1.Write(output, 0, output.Length); 
    BinaryWriter1.Flush();
    BinaryWriter1.Close();
    FileStream1.Close();
}

سپس در رویداد کلیک دکمه از متد بالا به صورت زیر استفاده کنید :

private void button1_Click(object sender, EventArgs e)
{
    SaveFileDialog SaveFileDialog = new SaveFileDialog();
    SaveFileDialog.Filter = "Excel Documents (*.xls)|*.xls";
    SaveFileDialog.FileName = "export.xls";
    if (SaveFileDialog.ShowDialog() == DialogResult.OK)
    {
        ToCsV(dataGridView1, SaveFileDialog.FileName);
    } 
}