yes registrado proveedor microsoft macro for está equipo conexion cadena c# excel oledb

c# - registrado - Escribir en el archivo de Excel con OLEDB



oledb connection string for excel 2016 (7)

Además de la respuesta de Michael Haren. La cuenta que deberá otorgar para modificar permisos para el archivo XLS probablemente sea SERVICIO DE RED si este código se está ejecutando en una aplicación ASP.NET (está especificado en el grupo de aplicaciones de IIS). Para saber exactamente en qué cuenta se está ejecutando su código, puede hacer una simple:

Response.Write(Environment.UserDomainName + "//" + Environment.UserName);

¿Alguien sabe cómo escribir en un archivo de Excel (.xls) a través de OLEDB en C #? Estoy haciendo lo siguiente:

OleDbCommand dbCmd = new OleDbCommand("CREATE TABLE [test$] (...)", connection); dbCmd.CommandTimeout = mTimeout; results = dbCmd.ExecuteNonQuery();

Pero recibo una OleDbException lanzada con un mensaje:

"No se puede modificar el diseño de la tabla ''test $''. Está en una base de datos de solo lectura".

Mi conexión parece estar bien y puedo seleccionar bien los datos, pero parece que no puedo insertar datos en el archivo de Excel, ¿alguien sabe cómo obtengo acceso de lectura / escritura al archivo Excel a través de OLEDB?


Me estaba ejecutando bajo ASP.NET y me encontré con los mensajes de error "No se puede modificar el diseño ..." y "No se puede encontrar ISAM ...".

Descubrí que necesitaba:

a ) Use la siguiente cadena de conexión:

Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties=''Excel 8.0;HDR=Yes;'';Data Source=" + {path to file};

Tenga en cuenta que también tuve problemas con IMEX=1 y con los atributos ReadOnly=false en la cadena de conexión.

b ) Otorgar TODOS permisos completos a la carpeta en la que se estaba escribiendo el archivo. Normalmente, ASP.NET se ejecuta bajo la cuenta SERVICIO DE RED, y eso ya tenía permisos. Sin embargo, el código OleDb no está administrado, por lo que debe ejecutarse en algún otro contexto de seguridad. (Actualmente soy demasiado flojo para descubrir qué cuenta, así que acabo de usar TODOS).


Necesita agregar ReadOnly=False; a su cadena de conexión

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;ReadOnly=false;Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1/";


También estaba buscando y respondiendo, pero la solución de Zorantula no funcionó para mí. Encontré la solución en http://www.cnblogs.com/zwwon/archive/2009/01/09/1372262.html

ReadOnly=false parámetro ReadOnly=false y la propiedad extendida IMEX=1 .

La propiedad IMEX=1 abre el libro de trabajo en modo de importación, por lo que los comandos que modifican la estructura (como CREATE TABLE o DROP TABLE ) no funcionan.

Mi cadena de conexión de trabajo es:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=workbook.xls;Mode=ReadWrite;Extended Properties=/"Excel 8.0;HDR=Yes;/";"


También tuve el mismo problema. Solo elimine la propiedad extendida IMEX=1 . Eso resolverá su problema. Su tabla se creará en su archivo de Excel ...


Un par de preguntas:

  • ¿El usuario que ejecuta su aplicación (¿usted?) Tiene permiso para escribir en el archivo?
  • ¿Es el archivo de solo lectura?
  • ¿Cuál es tu cadena de conexión?

Si está utilizando ASP, deberá agregar el usuario IUSER_ * como en este ejemplo .


  • ¿Cómo verifico los permisos para escribir en un archivo excel para mi aplicación (estoy usando excel 2007)?
  • El archivo no es de solo lectura ni está protegido (que yo sepa).
  • Mi conexión String es:

"Proveedor = Microsoft.Jet.OLEDB.4.0; Fuente de datos = fifa_ng_db.xls; Modo = ReadWrite; Propiedades extendidas = /" Excel 8.0; HDR = Sí; IMEX = 1 / ""