现在的位置: 首页 > 综合 > 正文

datagridView之数据导出到Excel(仍然保留你在datagridView中的排序格式)

2012年01月04日 ⁄ 综合 ⁄ 共 3203字 ⁄ 字号 评论关闭

 

       ///<summary>
        ///将datagridview中的数据导入到一张表中
        ///</summary>
        ///<returns>
        ///返回一张表
        /// </returns>
        private DataTable exporeDataToTable(DataGridView dataGridView)
        {
            //将datagridview中的数据导入到表中
            DataTable tempTable = new DataTable("tempTable");
            //创建列
            for (int column = 0; column < dataGridView.Columns.Count; column++)
            {
                DataColumn tempColumn = new DataColumn(dataGridView.Columns[column].HeaderText, typeof(string));
                tempTable.Columns.Add(tempColumn);
            }
            //添加datagridview中行的数据到表
            for (int row = 0; row < dataGridView.Rows.Count; row++)
            {
                DataRow tempRow = tempTable.NewRow();
                for (int column = 0; column < dataGridView.Columns.Count; column++)
                {
                    tempRow[column] = dataGridView.Rows[row].Cells[column].Value;
                }
                tempTable.Rows.Add(tempRow);
            }
            return tempTable;

        }

 

private void buttonStuOut_Click(object sender, EventArgs e)
        {

          //将datagridView中的数据导出到一张表中
            DataTable tempTable = this.exporeDataToTable(this .dataGridView1 );
            //导出信息到Excel表
            Microsoft.Office.Interop.Excel.ApplicationClass myExcel;
            Microsoft.Office.Interop.Excel.Workbooks myWorkBooks;
            Microsoft.Office.Interop.Excel.Workbook myWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;
            char myColumns;
            Microsoft.Office.Interop.Excel.Range myRange;
            object[,] myData = new object[500, 35];
            int i, j;//j代表行,i代表列
            myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            myExcel.Visible = true;
            if (myExcel ==null)
            {
                MessageBox.Show("本地Excel程序无法启动!请检查您的Microsoft Office正确安装并能正常使用","提示");
                return;
            }
            myWorkBooks = myExcel.Workbooks;
            myWorkBook = myWorkBooks.Add(System.Reflection.Missing.Value);
            myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[1];
            myColumns = (char)(this.dataGridView1.Columns.Count + 64);//设置列
            myRange = myWorkSheet.get_Range("A4", myColumns.ToString() + "5");//设置列宽
            int count =1;//第一列为空
            //设置列名
            foreach (DataColumn myNewColumn in tempTable.Columns )
            {
                myData[0, count] = myNewColumn.ColumnName;
                count = count + 1;
            }
            //输出datagridview中的数据记录并放在一个二维数组中
            j = 1;
            foreach (DataRow myRow in tempTable.Rows)//循环行
            {
                for (i =1; i <= tempTable .Columns .Count ; i++)//循环列
                {
                    myData[j, i] = myRow[i-1].ToString();
                }
                j++;
            }
            //将二维数组中的数据写到Excel中
            myRange = myRange.get_Resize(tempTable .Rows .Count + 1 ,tempTable .Columns .Count );//创建列和行
            myRange.Value2 = myData;
            myRange.EntireColumn.AutoFit();
            myWorkSheet.Cells[2, 2] = "符合您选择条件的数据信息";
            Microsoft.Office.Interop.Excel.Range myRange22 = myWorkSheet.get_Range("B2","B2");
            myRange22.Font.Bold = true;
            myRange22 .Font .Size ="20";
            myWorkSheet.Cells[3, 1] = "导出日期:" + DateTime.Now.ToString();
           
        }

抱歉!评论已关闭.