Aktualisieren Befehl einzelne Zeilen in Excel mit OLEDB und Daten-Set zu aktualisieren. (C #)

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

  •  07-07-2019
  •  | 
  •  

Frage

Ich bin das Importieren von Daten aus Excel eine Tabelle. Ich verwende nur OLEDB zu lesen. Aber Ich habe Probleme, das Ergebnis wieder auf die ursprüngliche Datei zu speichern. Unten ist so weit mein Code.

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");
                  .............
        }

Ich erhalte den folgenden Fehler:

  

Update erfordert einen gültigen Update, wenn sie mit geänderten Zeilen DataRow Sammlung übergeben.

Die Dokumentation zeigt Aktualisierungsbefehle Syntax ähnelt:

  

UPDATE Tabelle SET fieldID = 1, Description = 'nice' WHERE regionId = 1   Aber das wird nicht funktionieren für mich, ich brauche die aktuelle Zeile in der for-Schleife zu aktualisieren.

Jede Hilfe apprecaited, Dank

War es hilfreich?

Lösung

Wow.

ich meine ... wow.

Ich glaube nicht, dass bestimmte Methode der Selbstgeißelung ist Vergangenheit XP unterstützt.

ich sehr würde vorschlagen, fallen Sie OLEDB und einer der vielen API holen, um mit Excel-Dateien handelt. Sie können ein paar von ihnen finden Sie hier: http://www.codeplex.com/site Suche /? projectSearchText = Excel

Ich habe ein paar verwendet und sie funktionierte ziemlich verdammt gut. Alernatively, überprüfen Sie die OpenXML sdk wenn Sie planen, auf nur Office 2007 + unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top