A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© BIAO 初级黑马   /  2014-5-23 14:59  /  1370 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Filter = "导出Excel (*.xls)|*.xls";

            if (openFile.ShowDialog() != DialogResult.OK)
            {
                return;
            }
           string TSql = "SELECT * FROM [sheet1$]";    //这里固定写死了,如果用户改变了sheet1名字就找不到
           DataTable dt1 = ExcelToDataSet(openFile.FileName, TSql);

        /// <summary>
        /// 返回Excel数据源
        /// </summary>
        /// <param name="filename">文件路径</param>
        /// <param name="TSql">TSql</param>
        /// <returns>DataSet</returns>
        public static DataTable ExcelToDataSet(string filename, string TSql)
        {           string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;data source=" + filename;
            OleDbConnection myConn = new OleDbConnection(strCon);
            string strCom = TSql;
            myConn.Open();
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
            DataTable dt = new DataTable();
            myCommand.Fill(dt);
            myConn.Close();
            return dt;
        }


      string TSql = "SELECT * FROM [sheet1$]";    //这里固定写死了,如果用户改变了sheet1名字就找不到、
现在想问下,如果得到Excel的表名,自动读取对应的数据

2 个回复

倒序浏览
//excel导入到数据库功能
        private void button3_Click(object sender, EventArgs e)
        {
            string filename="";
            //打开导入EXCEl文件,获取文件名
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                //获取文件名
               filename= openFileDialog1.FileName;      
            }
//连接excel的连接字符串,excel2007版本以上的
//hdr=yes代表第一行是列名
  string strconn="Provider=Microsoft.Ace.oledb.12.0;Data Source="+filename+";"+"Extended Properties='Excel 12.0;HDR=Yes;'";
//查询excel 表格数据,[sheet1$]工作表的名字
  string sqlexcel = "select * from [用户信息$]";
//数据集对象
  System.Data.DataSet  ds = new System.Data.DataSet();
    //连接对象
  OleDbConnection olecon = new OleDbConnection(strconn);
            //打开连接对象
  olecon.Open();
            //适配器对象
  OleDbDataAdapter adapter = new OleDbDataAdapter(sqlexcel, olecon);
            //适配器填充导入数据到数据集
  adapter.Fill(ds,"book1");
  olecon.Close();//关闭连接对象
  //数据显示在dataGridView1中
  dataGridView1.DataSource = ds.Tables[0];
  //把导入的数据插入到数据库表中
  DataManager datamanager = new DataManager();
            //调用方法把数据添加到数据表中
  datamanager.AddDataFromExcel(ds);        
        }


//本人亲自测试
回复 使用道具 举报
NPOI、MyXls等,NPOI能够分析Excel文件的格式,能够进行常用Excel操作,不依赖于Excel,节省资源,没有安全性、性能的问题,在ASP.net中用最合适。只能处理xls格式文件、不能处理xlsx这样的新版本Excel文件格式。处理xlsx还要用OpenXML。三方插件,需要导入引用

OpenXML,微软提供的读写Excel的技术,优点和NPOI差不多,不过只能处理xlsx格式文件。docx、pptx



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马