J'importe des données d'Excel dans une feuille de calcul. Je n'utilise que OLEDB pour lire. Mais j'ai du mal à sauvegarder le résultat dans le fichier original. Ci-dessous est mon code jusqu'à présent.Commande de mise à jour pour mettre à jour une seule ligne dans Excel à l'aide de OLEdb et de dataset. (C#)
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");
.............
}
je reçois l'erreur suivante:
mise à jour nécessite un UpdateCommand valide lorsqu'il est passé collection DataRow avec des lignes modifiées.
La documentation montre la mise à jour des commandes syntaxe similaire à:
UPDATE nom_table SET fieldID = 1, Description = 'nice' OÙ regionId = 1 Mais ce ne marchera pas pour moi, je dois mettre à jour le ligne actuelle dans la boucle for.
Toute aide apprecaited, Merci
Qu'est-ce que l'auto-flagellation? J'utilise OLEDB parce que je n'ai pas besoin d'installer le bureau sur le serveur. OLEDB devrait fonctionner. Je vais mettre à jour ma question, j'ai fait quelques progrès. – Slabo
se fouetter soi-même ... OLEdb signifie que je me fouette? Est-ce vraiment si difficile? – Slabo
Par rapport aux méthodes basées sur le framework pour traiter les documents, définitivement. S'il vous plaît noter - vous avez du mal à enregistrer vos modifications sur le disque, n'est-ce pas? OLEDB est une technologie assez ancienne. les choses se sont améliorées depuis qu'il est arrivé. Et vous n'avez pas besoin d'installer le bureau pour utiliser les choses que j'ai mentionnées dans ma réponse. Vraiment, téléchargez un couple et prenez-les pour un tour. Vous serez beaucoup plus heureux. – Will