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

本文介绍了在C#中进行Excel读写操作时遇到的SQL问题,特别是使用OleDbConnection执行SQL语句时,由于列名与Access关键字冲突导致的错误。通过代码示例展示了读写操作,并强调了需要注意Access SQL语句的规范,避免使用如'Time'这样的保留关键字。

最近在使用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,于是不论怎么插入都是错了……

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值