Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с использованием Interop Excel / 18 сообщений из 18, страница 1 из 1
27.04.2016, 15:36
    #39225794
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Добрый день!

Есть приложение, которое должно вносить определенные изменения в Excel файл.

Ниже часть кода

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication3
{
public class RunApp
{
public static void Run()
{
string PathUnloadTemplate = Application.StartupPath + "\\template.xls";
object missingValue = Type.Missing;
LocalLog.AddLog("start");

try
{
Excel.Application ExcelApp = new Excel.Application();

ExcelApp.DisplayAlerts = false;
//ExcelApp.DefaultSaveFormat = Excel.XlFileFormat.xlExcel7;


try
{
ExcelApp.Workbooks.Open(PathUnloadTemplate, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, true);
LocalLog.AddLog("ExcelApp.Workbooks.Open SUCCESS");
}
catch (Exception exc)
{
LocalLog.AddLog("ExcelApp.Workbooks.Open ERRORRRRRRRRRRRRRRRRRRRRRRRRRRR");
LocalLog.AddLog(exc.ToString());
return ;
}

ExcelApp.ActiveWorkbook.SaveAs(PathUnloadTemplate, missingValue, missingValue, missingValue, missingValue, missingValue, Excel.XlSaveAsAccessMode.xlNoChange, missingValue, missingValue, missingValue, missingValue, missingValue);
LocalLog.AddLog("end");

}
catch (Exception exc)
{
LocalLog.AddLog(exc.ToString());
return;
}
}
}
}


Класс LocalLog пишет лог в текстовый файл. Приложение работает. Все ок. Проблемы начинаются при попытке запуска приложения из Планировщика задач (кстати при запуске из ms sql по команде xp_cmdshell аналогичная проблема).

При выполнении строки

ExcelApp.Workbooks.Open...

программа падает в catch и выводит следующее сообщение:

27.04.2016 15:00:00 - System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "D:\2\template.xls". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
в Microsoft.Office.Interop.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)
в WindowsFormsApplication3.RunApp.Run()

Подскажите пож-та в чем может быть дело?
...
Рейтинг: 0 / 0
27.04.2016, 15:41
    #39225804
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACK, судя по всему, прав не хватает у шедулера. Смотрите в сторону windows scheduler permissions.
...
Рейтинг: 0 / 0
27.04.2016, 15:44
    #39225807
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
AxeleronsemI-PACK, судя по всему, прав не хватает у шедулера. Смотрите в сторону windows scheduler permissions.

Было бы здорово, если бы так просто решалось, но нет. Добавлялась задача от имени Администратора, учетная запись была выбрана текущая, под которой выполнение происходит без ошибок.
...
Рейтинг: 0 / 0
27.04.2016, 15:46
    #39225811
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Были подозрения, что проблема в CurrentCulture (проблема описана тут - http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15). Но тоже не помогло.
...
Рейтинг: 0 / 0
27.04.2016, 15:47
    #39225812
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
У экселя есть еще такая багофича что он не работает без профиля пользователя. Надо создать папку
Код: c#
1.
C:\Windows\System32\config\systemprofile\Desktop
...
Рейтинг: 0 / 0
27.04.2016, 15:47
    #39225813
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
...
Рейтинг: 0 / 0
27.04.2016, 15:52
    #39225820
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Dima TУ экселя есть еще такая багофича что он не работает без профиля пользователя. Надо создать папку
Код: c#
1.
C:\Windows\System32\config\systemprofile\Desktop



Создал, не помогло :(
...
Рейтинг: 0 / 0
27.04.2016, 15:56
    #39225828
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
а что будет, если шедулить через ncron ?
...
Рейтинг: 0 / 0
27.04.2016, 15:59
    #39225834
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
а почему вы пытаетесь сделать WindowsForms Application ?
вам нужно делать Console Application
...
Рейтинг: 0 / 0
27.04.2016, 15:59
    #39225835
vb_sub
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACK,
а если запустить программу через планировщик, только от себя - то есть в планировщике выбираешь свою задачу и вызываешь пункт меню "Выполнить", то происходит exception или нет?
...
Рейтинг: 0 / 0
27.04.2016, 16:01
    #39225839
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Vladimir Baskakovа что будет, если шедулить через ncron ?

Не работал с ним, а чем он существенно может отличаться от стандартного виндового, используемого просто для запуска приложения?
...
Рейтинг: 0 / 0
27.04.2016, 16:02
    #39225840
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
vb_subsemI-PACK,
а если запустить программу через планировщик, только от себя - то есть в планировщике выбираешь свою задачу и вызываешь пункт меню "Выполнить", то происходит exception или нет?

Пробовал, также ошибка пишется в лог.
...
Рейтинг: 0 / 0
27.04.2016, 16:03
    #39225843
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACKDima TУ экселя есть еще такая багофича что он не работает без профиля пользователя. Надо создать папку
Код: c#
1.
C:\Windows\System32\config\systemprofile\Desktop



Создал, не помогло :(
у меня после этого шаманства из планировщика без пользовательской сессии через COM эксель начинал работать.
Создай еще эту папку
Код: c#
1.
C:\Windows\SysWOW64\config\systemprofile\Desktop


systemprofile - это профиль пользователя, который используется при запуске без пользовательской сессии. А экселю зачем-то нужна папка Desktop
...
Рейтинг: 0 / 0
27.04.2016, 16:07
    #39225849
vb_sub
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACK,

попробуй путь к xls файлу прописать константой на локальной машине ("C:\test\" и позапускать.
...
Рейтинг: 0 / 0
27.04.2016, 16:08
    #39225853
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACK, кстати, а точно процесс Экселя не висит в задачах? Такое бывает когда самого Экселя даже не видно.
...
Рейтинг: 0 / 0
27.04.2016, 16:16
    #39225860
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Похоже все-таки в папках дело. Вторую создал?
https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice The open operation ends in this exception:

Service cannot be started. System.Runtime.InteropServices.COMException (0x800A03EC) ...

Answers:
This solution is ...
・Windows 2008 Server x64
Please make this folder.
C:\Windows\SysWOW64\config\systemprofile\Desktop

・Windows 2008 Server x86
Please make this folder.
C:\Windows\System32\config\systemprofile\Desktop

...instead of dcomcnfg.exe.
...
Рейтинг: 0 / 0
27.04.2016, 16:49
    #39225911
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
semI-PACKVladimir Baskakovа что будет, если шедулить через ncron ?

Не работал с ним, а чем он существенно может отличаться от стандартного виндового, используемого просто для запуска приложения?

бесхитросностью. он точно запускает все из под того же пользователя где сам, как будто руками. у меня такое ощущение сложилось.
...
Рейтинг: 0 / 0
27.04.2016, 17:03
    #39225938
semI-PACK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием Interop Excel
Dima TПохоже все-таки в папках дело. Вторую создал?


Вторую создал. Как ни странно, но проблема оказалась именно в этом. Всем спасибо за советы, тему можно закрыть.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с использованием Interop Excel / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]