C#中读写Excel的方法及OleDbConnection的一个SQL问题

来源:互联网 发布:c语言提成英文 编辑:程序博客网 时间:2024/05/29 18:16

最近在使用C#对Excel进行操作,遇到了一些诡异的问题...

 

首先是一些代码,很容易看懂,实际上是用了一些SQL语句

这是写操作:

try            {                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + "Extended Properties=Excel 8.0;";                OleDbConnection conn = new OleDbConnection(strConn);                conn.Open();                System.Data.OleDb.OleDbCommand cmd = new OleDbCommand();                cmd.Connection = conn;                for (int i = 0; i < DataList.Count; i++)                {                    DataStruct d = DataList[i];                    string sql = "INSERT INTO [Sheet1$] (日期,时间,时刻,极端量,Pi,Pi开盘价,Pi最高价,Pi最低价,Pi结束价,Pj,P止盈,P止损,T止盈,T止损,类型) VALUES(";                    //string sql = "INSERT INTO [Sheet1$] (Data,Tim,Ti,Q,Pi,PiOpen,PiMax,PiMin,PiEnd,Pj,Pk,Pd,T,Tj,Typ) VALUES(";                    sql += "'" + d.getData() + "',";                    sql += "'" + d.getQiTime() + "',";                    sql += "'" + d.getType() + "')";                    cmd.CommandText = sql;                    cmd.ExecuteNonQuery();                }                conn.Close();                return true;            }            catch (System.Data.OleDb.OleDbException err)            {                MessageBox.Show("写入Excel失败!失败原因:" + err.Message, "提示信息",                   MessageBoxButtons.OK, MessageBoxIcon.Information);                //System.Diagnostics.Debug.WriteLine("写入Excel发生错误:" + ex.Message);            }


这是读操作:

try            {                string strConn;                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";                OleDbConnection OleConn = new OleDbConnection(strConn);                OleConn.Open();                String sql = "SELECT * FROM  [Paper$]";//可是更改Sheet名称,比如sheet2,等等                 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);                DataSet OleDsExcle = new DataSet();                OleDaExcel.Fill(OleDsExcle, "Paper");                OleConn.Close();                return OleDsExcle;            }            catch (Exception err)            {                MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",                    MessageBoxButtons.OK, MessageBoxIcon.Information);                return null;            }


 

另外,我在写Excel的时候,用Insert into语句时遇到了些问题,SQL语句看上去没错但是仍提示语法错误

经和同学讨论发现是OleDbConnection的问题,这是一个Access的SQL语句规范,我的一个列名用了Time,于是不论怎么插入都是错了……

 

 

 

 

 

 

 

 

 

 

原创粉丝点击