首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#连接excel2007有关问题

2012-04-01 
C#连接excel2007问题现在在做excel数据导入SQL的工具。BOSS分配的,SQL自带的导入数据不满足我们的需求。导入

C#连接excel2007问题
现在在做excel数据导入SQL的工具。BOSS分配的,SQL自带的导入数据不满足我们的需求。
导入工具已经写完了,数据也采集上来了,可是对方使用的excel2003的数据好像有部分是用excel2007编辑过的,我们现在用的数据库的连接驱动就是 Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + txtFile.Text + ";" + "Extended Properties=Excel 12.0;HDR=YES; 各位看看有没有什么错啊。我已经从微软的网站上下载了驱动包。可是在打开excel文件的时候就报下图的错误,我实在不明白怎么回事,求解答啊。。。。

[解决办法]
string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Dir + "\\"+fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

详情请对照这里看看http://www.cnblogs.com/zyc2/articles/182492.html
[解决办法]
isam,没安装的原因吧,
实在不行,就用MYXLS,组件速度比较快
[解决办法]

C# code
//导入excel2007public void EcxelToDataGridView(string filePath, DataGridView dgv)        {            //根据路径打开一个excel文件并将数据填充到dataset中            string strConn = @"Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + filePath + "; Extended Properties = 'Excel 12.0;HDR = NO; IMEX=1'";            OleDbConnection conn = new OleDbConnection(strConn);            conn.Open();            string strExcel = "";            strExcel = "select * from [sheet1$]";            DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);            string tableName = schemaTable.Rows[0][2].ToString().Trim();            OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);            DataSet ds = new DataSet();            myCommand.Fill(ds, "table1");            //根据DataGridView的列构造一个DataTable            DataTable td = ds.Tables[0];            try            {                //MessageBox.Show(td.ToString());                foreach (DataGridViewColumn dgvc in dgv.Columns)                {                    if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))                    {                        DataColumn dc = new DataColumn();                        dc.ColumnName = dgvc.DataPropertyName;                        dc.DataType = dgvc.ValueType;                        //MessageBox.Show(dc.ToString());                        td.Columns.Add(dc);                    }                }                //根据excel的行逐一对上面的构造的datatable的列进行赋值                for (int i = 0; i < ds.Tables[0].Rows.Count - 1; i++)                {                    //int j = 0;                    DataRow dr = td.NewRow();                    DataRow excelRow = ds.Tables[0].Rows[i];                    foreach (DataColumn dc in td.Columns)                    {                        dr[dc] = excelRow[i];                        //MessageBox.Show(dr[dc].ToString());                        i++;                    }                    td.Rows.Add(dr);                }                //在datagridview中显示导入的数据                dgv.DataSource = td;            }            catch (Exception)            {                MessageBox.Show("该表已存在你即将导入的excel文件...,请点击清空按钮重新导入...");                return;            }            finally            {                conn.Close();            }        }
[解决办法]
安装驱动之类的全是扯谈 只要LZ你安装了 office2007 就没问题

我很久以前搞的时候 也是叫我安装驱动 安装XX之类的

全是扯蛋 后来我安装office2007 就搞定了

而且LZ爆的错根本就不是什么驱动的问题

热点排行