乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > C# WinForm 用到<em>DataGridView</em>控件,怎么...-datag

C# WinForm 用到<em>DataGridView</em>控件,怎么...-datag

作者:乔山办公网日期:

返回目录:excel表格制作


可能是因为绑定的事件发正在清除的后面,你可以在代码里显式调用绑定,不要让其自动触发 DataGridView.Bind(); DataGridView.Columns.Clear();

这涉及到Execl读取了。
1、建议先建一个类ExcelHelper,需要引用dll,不想麻烦的话直接用微软的的Microsoft.Office.Interop.Excel就行,当然了,推荐NPOI,开源的,百度下载。参考一些常用写法,在这个类里写好读取Excel的方法,比如ExcelToDataTable(),将Excel读出来的数据转成DataTable型变量。
后续有更多Execl相关的操作的话,都在这个类里实现,方便移植。
2、导入时给DataGridView赋值就行。调用ExcelHelper.ExcelToDataTable()把Excel内容对应的DataTable取出来,然后赋给DataGridView的DataSource属性。
需要使用插件,
1、微软的EXCEL插件,(DLL) ,需要运行程序的机器上安装的有对应版本的EXCEL,慢。
2、NPOI(第三方),不需要其他约束,二进制处理,极快。
两种插件思路都是按照 单元格来处理EXCEL读写,可以自己查询文档,很简单的。
比如
var st1 = wk.GetSheetAt(0);// EXCEL的第一个sheet。
var row = st1.GetRow(0);//该sheet的第一行。
var cell = row.GetCell(0); //该行的第一个单元格,
然后就是赋值了,
cell.SetCellValue = "你要赋的值";
然后遍历整个sheet 就OK了。
最后存起来。
using (Stream s = File.OpenWrite(Path+".xlsx"))
{
wk.Write(s);
}

DataGrid其实格式和Excel一样的, 你一次取一行,然后从第一列开始遍历,给EXCEL赋值就好了.
var value = Mydatagrid.Row[i][j]; 其实就是个数据表,分别指定行数和列数,就取出来值了。
自己转换一下数据类型,给EXCEL就OK了。、

可以使用winform编程的方式实现,步骤如下:

  1. 读取这个excel文件e799bee5baa6e997aee7ad94e78988e69d83337然后生成Datable 。

  2. 在winform前台界面选择生成的Datable 。

  3. 然后填写以下代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;

    namespace 读Excel文件
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            /// <summary>
            /// 选择文件按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    this.textBox1.Text = this.openFileDialog1.FileName;
                }
            }
            /// <summary>
            /// 点击导出excel按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button2_Click(object sender, EventArgs e)
            {
                string File = this.openFileDialog1.FileName;
                DataTable dt = ExcelUp(File);
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = dt;

            }
            /// <summary>
            /// 读取指定excel表中的内容返回datatable
            /// </summary>
            /// <param name="fileName">文件地址</param>
            /// <returns>表中内容</returns>
            public DataTable ExcelUp(string fileName)
            {
                string filePath = fileName;//读取excel文件路径;

                DataTable dt = GetDataTable("Sheet1", filePath);

                return dt;

            }

            /// <summary>
            /// 读取excel指定页中的内容
            /// </summary>
            /// <param name="strSheetName">页名</param>
            /// <param name="strExcelFileName">excel路径</param>
            /// <returns></returns>
            protected DataTable GetDataTable(string strSheetName, string strExcelFileName)
            {
                //源的定义
                string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source={0};" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';", strExcelFileName);

                //Sql语句
                string strExcel = string.Format("select * from [{0}$]", strSheetName);

                //定义存放的数据表
                DataSet ds = new DataSet();

                //连接数据源
                OleDbConnection conn = new OleDbConnection(strConn);

                try
                {
                    conn.Open();
                    //适配到数据源
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
                    adapter.Fill(ds, strSheetName);
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    conn.Close();
                }
                return ds.Tables[strSheetName];
            }


        }
    }

相关阅读

关键词不能为空
极力推荐
  • Excel中轻松搞定行和列互换问题-excel行列转换

  • excel行列转换,在实际工作中为了阅读方便或者别的原因互换工作表中的行和列是很常见的一种情况,这时我们要是手动一条条来操作不仅速度很慢还更容易出错。小编今天介绍个小技巧

ppt怎么做_excel表格制作_office365_word文档_365办公网