0

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 ファイルには、このエラーの原因となっている DM という名前の列があります。この列名は別のソフトウェアで使用されているため、Excel で保持したいと考えています。これに対処するための挿入の C# コードでの回避策はありますか?

ここに画像の説明を入力

4

1 に答える 1

1

問題が見られるのは、valuesこの行のキーワードです

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

INSERTステートメントでは、通常、 を呼び出す前に列フィールドを指定しますVALUESVALUESまたは、列フィールドに名前を付けずに呼び出すこともできます。この例では、両方を行います。上記VALUESの列を割り当てる前に問題が発生します。

1 つのオプションは、列の宣言を完全に削除してそのまま実行することですinsert into [sd$] values "(" + "'" + rec.SampleNo +。つまり、列とエントリが一致します。また、INSERT ステートメントの列の名前を [DM] に変更し、データが挿入された後に Excel スプレッドシートの列の名前を [DM] に変更する次のコードを使用してルーチン タスクとして変更することもできます: http:// dontbreakthebuild.com/2012/03/16/reading-excel-column-names-in-c-using-excel-interop/

他のすべてが失敗した場合は、Open XML SDK 2.0を使用してドキュメントを操作してみてください。

出ました!幸運を。

于 2012-09-19T17:23:23.600 に答える