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

DataGridView両方にColumns コレクションがあり、DataTable それらを反復することで列名を取得できます。

これを行う前に:

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;
    }
}

次のコードを追加します。

c = 0;
foreach(DataGridViewColumn dataGridViewColumn in dataGridView1.Columns)
{
    xlWorkSheet.Cells[0, c++] = dataGridViewColumn.Name;
}
于 2012-09-23T14:20:57.423 に答える