0

我将datagridview导出到excel

但 Headcolumn 不显示在 excel 文件中。

样本

结果(在 Excel 中)

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

但我需要结果(在 Excel 中)

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

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

非常感谢您的宝贵时间:)

4

1 回答 1

0

There is a Columns collection in both DataGridView and DataTable You can get your column name by iterating over them.

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;
}
于 2012-09-23T14:20:57.423 回答