欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# data_gridview 应用 博客分类: C#oracle数据库 c#data_gridview数据绑定导出excel 

程序员文章站 2024-03-25 15:10:16
...

 

1.数据绑定

a.编辑列

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


C# data_gridview 应用
            
    
    博客分类: C#oracle数据库 c#data_gridview数据绑定导出excel 
  

注意: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控件使用灵活,还有很多方法,可以参照系统提供的事件进行学习。