使用c#winform ,如何实现Excel导入到datagridview中?

fred-hust 2014-06-20 10:37:56
本人小白,想要实现EXCEL文件中的数据导入到datagridview中,EXCEL中的数据是多行多列,行数和列数不确定,如何实现导入到datagridview中显示,具体的界面如下:


两个button,选择文件button实现选择Excel文件的功能,并在textbox中显示文件路径;button2实现读取数据到datagridview。
...全文
3807 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
敌敌畏耶 2014-06-20
  • 打赏
  • 举报
回复 1
百度一大把

调用: EcxelToDataGridView("test.xls",dataGridView1);
  /// Excel数据导入方法
        public void EcxelToDataGridView(string filePath,DataGridView dgv)
        {
            //根据路径打开一个Excel文件并将数据填充到DataSet中
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//HDR=YES 有两个值:YES/NO,表示第一行是否字段名,默认是YES,第一行是字段名
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            DataSet ds = null;
            strExcel = "select  * from   [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            ds = new DataSet();
            myCommand.Fill(ds, "table1");
            dataGridView1.DataSource = ds.Tables[0].DefaultView; 
}
於黾 2014-06-20
  • 打赏
  • 举报
回复
button1的click事件注册了么... 你先断点跟一下,看你点了按钮后有没有走到函数里
fred-hust 2014-06-20
  • 打赏
  • 举报
回复
有啊,设置了的。
  • 打赏
  • 举报
回复
引用 2 楼 u010593551 的回复:
上面的代码openfiledialog为什么没用啊?打不开文件,button1_Click点击之后没有响应
你窗口上有 openFileDialog1 这个控件么?
fred-hust 2014-06-20
  • 打赏
  • 举报
回复
上面的代码openfiledialog为什么没用啊?打不开文件,button1_Click点击之后没有响应
fred-hust 2014-06-20
  • 打赏
  • 举报
回复
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Datagridview_Exceltest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.openFileDialog1.ShowDialog(); this.textBox1.Text = this.openFileDialog1.FileName; } private void button2_Click(object sender, EventArgs e) { string fileName = ""; fileName = this.textBox1.Text; if (this.textBox1.Text != "") { try { string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + " ;Extended Properties=Excel 8.0"; System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon); string strCom = " SELECT * FROM [punishCase$] "; System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn); System.Data.DataTable dt = new System.Data.DataTable(); myCommand.Fill(dt); this.dataGridView1.DataSource = dt; } catch { MessageBox.Show("请选择案件导入的EXCEL"); } } else { MessageBox.Show("请选择Excel文件"); } } } }
fred-hust 2014-06-20
  • 打赏
  • 举报
回复
引用 7 楼 u010302605 的回复:
你的问题体现你的思想有问题。datagridview是一种展现方式,excel是一种存储方式。既然没有直接bind的方法,就分拆问题。如何读取excel到内存数据,如何把内存数据在datagridbiew中显示出来。这两个问题,你可以google到一堆解决方案,甚至代码。 遇到问题要学会思考怎么分解问题,然后每个问题去求解,哪怕是走了弯路都让你真的搞懂一些东西。而不是这样的问题,就算我们代码贴给你,你又得到什么呢,解决了一个问题么?如果我现在是CSV格式文件要在rdlv里面显示呢?再提一个问题?
多谢啊。
penguin_ku 2014-06-20
  • 打赏
  • 举报
回复
你的问题体现你的思想有问题。datagridview是一种展现方式,excel是一种存储方式。既然没有直接bind的方法,就分拆问题。如何读取excel到内存数据,如何把内存数据在datagridbiew中显示出来。这两个问题,你可以google到一堆解决方案,甚至代码。 遇到问题要学会思考怎么分解问题,然后每个问题去求解,哪怕是走了弯路都让你真的搞懂一些东西。而不是这样的问题,就算我们代码贴给你,你又得到什么呢,解决了一个问题么?如果我现在是CSV格式文件要在rdlv里面显示呢?再提一个问题?

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧