c# - and - Microsoft Office Excel no puede acceder al archivo ''c: / inetpub / wwwroot / Timesheet / App_Data / Template.xlsx''
export datatable to excel c# windows forms (6)
Déjenme señalar que en mi lugar, agregar el directorio c: / windows / syswow64 / config / systemprofile / desktop no funcionó.
El punto es que WOW64 significa Windows en Windows64, eso significa que en realidad se aplica a los programas de 32 bits que se ejecutan en el sistema operativo de 64 bits.
Como tengo Excel de 64 bits instalado, el directorio correcto resultó ser el c: / windows / system32 / config / systemprofile / desktop
Tengo mi código de la siguiente manera:
Microsoft.Office.Interop.Excel.Application oXL = null;
Microsoft.Office.Interop.Excel.Sheets sheets;
Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add(System.Reflection.Missing.Value);
/*
* Here is the complete detail''s about Workbook.Open()
*
* Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format,
* Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin,
* Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
*/
Workbook workbook = excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
sheets = workbook.Worksheets;
Ahora para la línea: -
workbook = excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
Se ejecuta directamente desde el estudio visual (F5) pero cuando intento acceder a él con IIS no funciona. Lanza el error de la siguiente manera:
Microsoft Office Excel no puede acceder al archivo ''c: / inetpub / wwwroot / Timesheet / App_Data / Template.xlsx''. Hay varias razones posibles:
• El nombre o la ruta del archivo no existe.
• El archivo está siendo utilizado por otro programa.
• El libro de trabajo que está intentando guardar tiene el mismo nombre que un libro de trabajo actualmente abierto.
He intentado el trabajo como:
- La carpeta y el archivo existen, dando acceso al IUSR _ ### (usuario de IIS) y al usuario de ASPNET en la carpeta donde está el archivo.
- En Servicios de componentes (DCOM) se le otorga acceso al usuario apropiado.
Ya he dado todos los permisos a la carpeta donde existe la plantilla (.xlsx)
¿¿Alguna sugerencia??
Envolví mi WCF en un servicio de Windows. La creación de las carpetas de escritorio me lo resolvió en una máquina, pero no en otra.
Mi problema al final fue que mi servicio de Windows no se ejecutó bajo un usuario activo de la máquina. La configuración del servicio para ejecutar bajo un usuario que está activo en la máquina resolvió este problema para mí hasta ahora.
Solo la combinación de
- Carpeta de escritorio existente
- Servicio que se ejecuta bajo una cuenta de usuario real
funcionó para mí
Este artículo me llevó a la solución completa: no puedo acceder al archivo de Excel
Esto funciona
excel.exe / safe
Esto no y da el mismo error que el inicio de Excel regular
excel.exe / automatización
Esto también ocurre con todas las aplicaciones de MS Office 2007 para CUALQUIER archivo de red. El acceso a archivos locales está bien.
Me gustaría agregar algo a la respuesta de Eric Bonnot: la respuesta funcionó en parte porque trabajé en un servidor IIS con un usuario no administrador con el PIA powerpoint .
Me di cuenta de que no podía abrir un archivo pptx si este tenía un medio (imagen, por ejemplo) en él.
El "truco" era agregar también los derechos del usuario de Windows (el que usa el PIA) en los directorios systemprofile / AppData .
Espero que esto ayude
Previamente intenté con este problema, luego lo resolví.
Solución:
Puse el permiso completo en una carpeta en particular (carpeta secundaria y archivos) y comprobé que funcionaba bien.
Prueba esto:
- Crea el directorio
C: / Windows / SysWOW64 / config / systemprofile / Desktop
(para la versión de 32 bits de Excel / Office en una computadora con Windows de 64 bits) o
C: / Windows / System32 / config / systemprofile / Desktop
(para una versión de 32 bits de Office en una computadora Windows de 32 bits o una versión de 64 bits de Office en una computadora Windows de 64 bits).
- Para el directorio de escritorio , agregue permisos de control total para el usuario relevante (por ejemplo, en Win7 e IIS 7 y DefaultAppPool establezca permisos para el usuario IIS AppPool / DefaultAppPool ).
Publicación original con respuesta: