C# data_gridview 应用

 

1.数据绑定

a.编辑列

Windows窗体上新建一个DataGridView,修改名称为dg_user,选中dg_user,右击鼠标,选择“编辑列”,添加列user_id,user_name,plant_name,如图:



  

注意:DataPropertyName应和SQL语句查询的字段名保持一致,HeaderText为界面显示的列名,Visible表示界面是否显示该列(例如ID列一般不需要显示给用户,但是可能会作为删除等操作的行标,所以将该列设置为隐藏列)。

b.连接数据库

获取与数据库的连接,通过SQL查询语句查询表ljj_usertabluser_id, user_name, plant_name 字段的信息,存储在DataTable 中,代码如下:

 

public DataTable get_users() 
        {
            OracleConnection conn = null;
            OracleTransaction tran = null;
            OracleCommand cmd = null;
            try
            {
                StringBuilder str = new StringBuilder();
                str.Append("select user_id,user_name,plant_name from  ljj_usertable ");
                conn = new OracleConnection("Data Source=XX;Persist Security Info=True;User ID=XXX;Password=XXXX");
                conn.Open();
                tran = conn.BeginTransaction();
                cmd = new OracleCommand(str.ToString(), conn, tran);
                DataSet ds = new DataSet();
                OracleDataAdapter oda = new OracleDataAdapter(cmd);
                oda.Fill(ds);
                DataTable dt = ds.Tables[0];
                tran.Commit();
                conn.Close();
                return dt;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                if (null != conn)
                    conn.Close();
 
            }
        }

 

 

 

c.数据显示

将方法get_users()获得的DataTable 显示在data_gridview中,代码如下:

public void show_users() 
        {
                this.dg_user.DataSource = this.get_users().DefaultView;
 
                this.dg_user.Refresh(); 
}

 

刷新表格时运行方法show_users(),数据库表相应的数据就显示在data_gridview中啦。

 

2.data_gridview中的数据导出为excel文件

a.筛选有效数据

获取datagridview中的数据保存在EXCEL文件中,一般情况下,隐藏列是程序员使用的,不需要展现给用户,所以保存在EXCEL文件中的数据需要去掉隐藏列,方法如下:

public DataTable SiftData(DataGridView datagridview)
        {
            try
            {
                DataTable dt = new DataTable();
               
                DataTable columnname_Table = new DataTable();
                
                for (int column = 0; column < datagridview.Columns.Count; column++)
                { 
                    if (datagridview.Columns[column].Visible == false) { continue; }
                    
                    dt.Columns.Add( new DataColumn(datagridview.Columns[column].HeaderText, typeof(string)));
                    columnname_Table.Columns.Add(new DataColumn(datagridview.Columns[column].Name, typeof(string)));
                  
                }
               
                for (int row = 0; row < datagridview.Rows.Count; row++)
                {
                    
                    if (datagridview.Rows[row].Visible == false) { continue; }
                    DataRow tempRow = dt.NewRow();
                   
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        tempRow[i] = datagridview.Rows[row].Cells[columnname_Table.Columns[i].ColumnName].Value;
                    }
                   
                    dt.Rows.Add(tempRow);
                }
                return dt;
            }

 

 

 

b.将得到的数据导出为excel表格

首先在窗口上添加一个控件SaveFileDialog,命名为sdg_filename,

 代码结构分四步:

1)设置工作簿,工作表和单元格;

2)根据datatable中的数据向excel表中写入列名

3)写入数据

4)保存文件

代码如下:

private void exportExcelByTable(DataTable dataTable)
        {
            try
            {
                int colIndex = 0;
                Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
                Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
                Aspose.Cells.Cells cells = sheet.Cells;
                foreach (DataColumn dc in dataTable.Columns)
                {
                    cells[0, colIndex].PutValue(dc.ColumnName);
                    colIndex++;
                }
                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    for (int j = 0; j < dataTable.Columns.Count; j++)
                    {
                        cells[i + 1, j].PutValue(dataTable.Rows[i][j].ToString());
                    }
                }
                sdg_filename.Filter = " xls files(*.xls)|";
                sdg_filename.FileName = DateTime.Now.ToString("yyyyMMdd") + "-" + "用户信息表.xls";
                sdg_filename.FilterIndex = 2;
                sdg_filename.RestoreDirectory = true;
                if (sdg_filename.ShowDialog() == DialogResult.OK)
                {
                    workbook.Save(sdg_filename.FileName.ToString());
                   
                }
 
            }
            catch (Exception e)
            {
                throw e;
            }
 
        }

 

运行函数:exportExcelByTable(SiftData(this.dg_user));

 

 

c.打开文件

System.Diagnostics.Process.Start(sdg_filename.FileName);

打开文件可以和保存文件写在一起,这样保存成功就直接打开了,非常实用。

到这里,DataGridView的绑定数据和导出数据就介绍完了,DataGridView控件使用灵活,还有很多方法,可以参照系统提供的事件进行学习。

你可能感兴趣的:(C#,导出Excel,数据绑定,data_gridview)