تحديث الأوامر لتحديث صف واحد في Excel باستخدام OLEDB ورقة العمل. (C #)

StackOverflow https://stackoverflow.com/questions/1422165

  •  07-07-2019
  •  | 
  •  

سؤال

وأنا استيراد البيانات من Excel جداول البيانات. أنا فقط باستخدام OLEDB للقراءة. ولكن أواجه صعوبة في توفير النتيجة مرة أخرى إلى الملف الأصلي. أقل من قانون بلدي حتى الآن.

string ExcelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=ReadWrite;" +
        "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";",
        Server.MapPath("./Uploads/" + excelName));
    try
    {
        OleDbDataAdapter ExcelDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$A8:AZ67]", ExcelConnectionString);
        DataSet objDataSet = new DataSet();
        ExcelDataAdapter.Fill(objDataSet, "ExcelTable");
        for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++ )
        {
            Slab slb = new Slab();
            slb.ReceiveDate = objDataSet.Tables[0].Rows[i].Field<DateTime>(0);
            slb.VesselName = objDataSet.Tables[0].Rows[i].Field<string>(1);
            slb.Lot = Convert.ToInt16(objDataSet.Tables[0].Rows[i].Field<double>(2));
            slb.SlabSource = objDataSet.Tables[0].Rows[i].Field<string>(3);
            slb.CertificateNumber = objDataSet.Tables[0].Rows[i].Field<string>(4);

            //I think the next two lines do the same thing.
            objDataSet.Tables[0].Rows[i][4] = "message here";
            objDataSet.Tables[0].Rows[i].SetField<string>(51, "message here");
            ExcelDataAdapter.Update(objDataSet, "ExcelTable");
                  .............
        }

وأحصل على الخطأ التالي:

<اقتباس فقرة>   

وتحديث يتطلب UpdateCommand صالح عند تمرير مجموعة DataRow مع صفوف تعديلها.

وثائق تظهر الأوامر تحديث بناء الجملة مشابهة ل:

<اقتباس فقرة>   

وجدول UPDATE SET fieldID = 1 وصف = 'لطيفة' WHERE RegionID = 1   ولكن هذا متعود العمل بالنسبة لي، ولست بحاجة لتحديث الصف الحالي في لحلقة.

وأي مساعدة apprecaited، بفضل

هل كانت مفيدة؟

المحلول

ونجاح باهر.

وأعني ... نجاح باهر.

وأنا لا أعتقد أن طريقة معينة لجلد الذات ويدعم الماضي XP.

وكنت غاية أقترح عليك إسقاط OLEDB والتقاط واحدة من العديد من ال API للتعامل مع ملفات اكسل. يمكنك أن تجد حفنة منهم هنا: http://www.codeplex.com/site / بحث؟ projectSearchText = التفوق

ولقد استعملت زوجين وعملوا جميلة اللعنة جيدة. Alernatively، تحقق من في OPENXML الإستراحة إذا كنت تخطط على مجرد دعم أوفيس 2007 +.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top