comando Update para atualizar única linha no Excel usando OLE DB e conjunto de dados. (C #)

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

  •  07-07-2019
  •  | 
  •  

Pergunta

Estou importar dados de Excel uma planilha. Estou apenas usando OLE DB para ler. Mas eu estou tendo problemas para salvar a parte de trás resultado para o arquivo original. Abaixo está o meu código até agora.

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

Eu recebo o seguinte erro:

Atualização requer um UpdateCommand válido quando passado coleção DataRow com linhas modificadas.

Os shows documentação de atualização de comandos de sintaxe semelhante a:

UPDATE tabela SET fieldID = 1, Descrição = 'agradável' WHERE regionId = 1 Mas isso não vai funcionar para mim, eu preciso atualizar a linha atual no loop for.

Qualquer ajuda apprecaited, Graças

Foi útil?

Solução

Wow.

Quer dizer ... wow.

Eu não acho que o método particular de auto-flagelação é suportado XP passado.

Eu sugiro que você deixar cair OLEDB e pegar um dos muitos API do para lidar com arquivos do Excel. Você pode encontrar um monte deles aqui: http://www.codeplex.com/site / search? projectSearchText = excel

Eu usei um par e eles trabalharam muito muito bom. Alernatively, veja o OpenXML SDK se você planeja apenas apoiando Office 2007 +.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top