简体   繁体   English

如何将HeadGrid在DataGridView中保存到Excel?

[英]How to save HeadColumn in DataGridView to Excel?

I make datagridview export to excel 我使datagridview导出到excel

but Headcolumn don't show in excel files. 但Headcolumn不在Excel文件中显示。

Sample 样品

result (in Excel) 结果(在Excel中)

1 | mani | 213/435 | 0-892-342234-09
2 | ware | 1/67    | 053-36-49

But I need result (in Excel) 但我需要结果(在Excel中)

ID | Name | Address | Tel. >>> **Headcolumn**
1  | mani | 213/435 | 0-892-342234-09
2  | ware | 1/67    | 053-36-49

Code C# Windows Form 代码C#Windows窗体

        private void btExport_Click(object sender, EventArgs e)
        {
            string sql = @"SELECT id,fullname,address,tele FROM tablePeople";
            SqlCommand cmd = new SqlCommand(sql, Conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "data");
            DataTable dt = ds.Tables["data"];

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            int r = 0;
            int c = 0;

            // DGV To EXCLE But HeadColumn don't show in excel
            for (r = 0; r <= dataGridView1.RowCount - 1; r++)
            {
                for (c = 0; c <= dataGridView1.ColumnCount - 1; c++)
                {
                    DataGridViewCell cell = dataGridView1[c, r];
                    xlWorkSheet.Cells[r + 1, c + 1] = cell.Value;
                }
            }

            xlWorkBook.SaveAs(@"c:\details.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);

            MessageBox.Show("Excel file created");
        }

Thanks you very much for your time :) 非常感谢您的时间:)

There is a Columns collection in both DataGridView and DataTable You can get your column name by iterating over them. DataGridViewDataTable中都有一个Columns集合。您可以通过对它们进行迭代来获取列名。

Before you do this: 在执行此操作之前:

for (r = 0; r <= dataGridView1.RowCount - 1; r++)
{
    for (c = 0; c <= dataGridView1.ColumnCount - 1; c++)
    {
        DataGridViewCell cell = dataGridView1[c, r];
        xlWorkSheet.Cells[r + 1, c + 1] = cell.Value;
    }
}

Add this code: 添加此代码:

c = 0;
foreach(DataGridViewColumn dataGridViewColumn in dataGridView1.Columns)
{
    xlWorkSheet.Cells[0, c++] = dataGridViewColumn.Name;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM