none
Quitar comilla simple al usar Insert con OleDb RRS feed

  • Pregunta

  • Que tal

    Me encuentro con un problema al querer Exportar información a Excel desde c# usando OleDb de la siguiente forma

     var path = Environment.SpecialFolder.MyDocuments + @"\ExportApp.xls";
                string cadenaConexionExcel = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
    @"Data Source=" + path +
    @"Extended Properties=" + '"' + "Excel 8.0;HDR=NO" + '"';
                using (var cn = new OleDbConnection(cadenaConexionExcel))
                {
                    cn.Open();
                    using (var cmd = cn.CreateCommand())
                    {
                        var appData = new App.Data.cdUsuarios();
                        var lista = appData.GetUsuarios();
    
                        var index = 2;
                        foreach (var ob in lista)
                        {
    
                            cmd.CommandText = string.Format("UPDATE [Usuarios$A{0}:A{0}] SET F1='{1}'", index, ob.Alias);
                            cmd.ExecuteNonQuery();
    
                            cmd.CommandText = string.Format("UPDATE [Usuarios$B{0}:B{0}] SET F1='{1}'", index, ob.Alta);
                            cmd.ExecuteNonQuery();
    
                            cmd.CommandText = string.Format("UPDATE [Usuarios$C{0}:C{0}] SET F1='{1}'", index, ob.Apellidos);
                            cmd.ExecuteNonQuery();
    
                            cmd.CommandText = string.Format("UPDATE [Usuarios$C{0}:C{0}] SET F1='{1}'", index, ob.Nivel);
                            cmd.ExecuteNonQuery();
                            index++;
                        }
                    }
                }

    hasta ahí no hay problema hasta que abro el Excel y al inicio de todas las celdas pone una comilla simple.

    Por Ejemplo A2('Alias) A2('Nombre) 

     Eh tratado de quitar de varias formas pero no logro hacer que ingrese el valor sin la celda insculo usando parametros me pone la comilla

    jueves, 26 de febrero de 2015 20:46

Todas las respuestas

  • Hola DesarrolloVA, puedes probar agregando el atributi IMEX. Tu cadena quedaría así:

     var path = Environment.SpecialFolder.MyDocuments + @"\ExportApp.xls";
                string cadenaConexionExcel = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
    @"Data Source=" + path +
    @"Extended Properties=" + '"' + "Excel 8.0;IMEX=1;HDR=NO" + '"';

    O bien esta:

    var path = Environment.SpecialFolder.MyDocuments + @"\ExportApp.xls";
                string cadenaConexionExcel = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
    @"Data Source=" + path +
    @"Extended Properties=" + '"' + "Excel 12.0 Xml;IMEX=1;HDR=NO" + '"';
    

    Espero resulte útil.

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    MCP Profile

    viernes, 27 de febrero de 2015 11:41
  • Parece funcionar pero ahora me arroja un error:

    Excepción no controlada del tipo 'System.Data.OleDb.OleDbException' en System.Data.dll

    Información adicional: La operación debe usar una consulta actualizable.

    viernes, 27 de febrero de 2015 18:47