【问题标题】:Invalid bracketing in insert to excel command using c# and oledb?使用c#和oledb插入到excel命令中的括号无效?
【发布时间】:2012-09-20 02:23:26
【问题描述】:

我正在使用 OLEDB 将一些记录插入到 excel 文件中

    foreach (TblSample rec in LstTblSample)
            {

                OleDbCommand cmdInsert = new OleDbCommand("insert into [sd$]" +
                                                   "([Lab Ref],[D.M.],PH,CP,ADF,NDF,DMD,ME,NIRASH,IFCOW,IFSHEEP,NH3,UFV,UFL,PDIE,PDIN,PDIA,LFU,CFU,SFU) values" +
                                                   "(" + "'" + rec.SampleNo + "'" + "," + "'" + rec.DryMatter + "'" + "," + "'" + rec.pH + "'" + "," +
                                                   "'" + rec.CrudeProtein + "'" + "," + "'" + "" + "'" + "," + "'" + rec.NDF + "'" + "," + "'" + rec.DMD + "'" + "," +
                                                   "'" + rec.ME + "'" + "," + "'" + rec.ASH + "'" + "," + "'" + rec.DMIntakeCattle + "'" + "," +
                                                   "'" + rec.DMIntakeSheep + "'" + "," + "'" + rec.NH3 + "'" + "," + "'" + rec.UFV + "'" + "," +
                                                   "'" + rec.UFL + "'" + "," + "'" + rec.PDIE + "'" + "," + "'" + rec.PDIN + "'" + "," + "'" + rec.PDIA + "'" + "," +
                                                   "'" + rec.LFU + "'" + "," + "'" + rec.CFU + "'" + "," + "'" + rec.SFU + "'" + ")", con);
                cmdInsert.ExecuteNonQuery();
            }

我的 excel 文件有一个名为 D.M. 的列。这导致了这个错误。我想将此列名保留在 excel 中,因为它被另一个软件使用。在 C# 代码中是否有任何解决方法可以解决这个问题?

【问题讨论】:

    标签: c# excel oledb


    【解决方案1】:

    我发现问题是这一行中的关键字values

    OleDbCommand cmdInsert = new OleDbCommand("insert into [sd$] values" +
    

    INSERT 语句中,您通常在调用VALUES 之前指定列字段。或者,您可以调用 VALUES 而不命名列字段。在这种情况下,你两者都做。以上VALUES BEFORE 分配列会导致问题。

    一种选择是完全删除列声明,只需执行insert into [sd$] values "(" + "'" + rec.SampleNo + - 即列和条目是否匹配。您也可以尝试将 INSERT 语句中的列重命名为 [DM],然后在插入数据后将 excel 电子表格中的列重命名为 [D.M.] 作为例行任务,当然使用以下代码对其进行修改:http://dontbreakthebuild.com/2012/03/16/reading-excel-column-names-in-c-using-excel-interop/

    如果一切都失败了,请使用Open XML SDK 2.0 来尝试操作文档。

    我出去了!祝你好运。

    【讨论】:

    • 抱歉,我的复制粘贴出错了。我在实际应用中正确地做到了这一点。我仍然得到那个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 2012-05-08
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多