Вопрос

Использование библиотеки Microsoft.Office.Interop.Excel

Возникла проблема, нужно работать с файлом экселя, использую библиотеку Microsoft.Office.Interop.Excel, запихнул ее во внешние сборки, подключил в методах БПМ. и в задании сценарии на строке

Excel.Application xlApp = new Excel.Application();

выбивает ошибку:

System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" либо одну из их зависимостей. Не удается найти указанный файл.

Имя файла: 'office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

WRN: Assembly binding logging is turned OFF.

To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure logging.

To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

 

Нравится

5 комментариев

Приветствую

советую посмотреть и скачать на данном сайте библиотеки NetOffice https://osdn.net/projects/netoffice/ . Я сам с помощью данных библиотек не одну задачу решал. И вся документация понятна и есть Темплейты разобранные на Кейсах. Скачиваем, ставим библиотеки и пользуемся в своих проектах.

Вот ссылка на проект на ГитХабе https://github.com/NetOfficeFw/NetOffice

Установил вод, ошибка изменилась на следующую:

System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "E:\BPMReport\636790185921323443.xlsx". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.

• Файл используется другой программой.

• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

   в 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)

   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Файл существует, вот код:

var userConnection = Get<UserConnection>("UserConnection");
MemoryStream ms = new MemoryStream((
				new Select(userConnection).Top(1).Column("Data")
				.From("KnowledgeBaseFile")
				.Where("KnowledgeBaseId").IsEqual(Column.Parameter("302eeb80-7559-4fcd-8827-833d94fa78e6"))as Select).ExecuteScalar<byte[]>());
string FileName = "E:\\BPMReport\\" + DateTime.Now.Ticks.ToString() + ".xlsx";
            FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write);
            byte[] bytes = new byte[ms.Length];
            ms.Read(bytes, 0, (int)ms.Length);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
 
object m = Type.Missing;
Application xlApp = new Application();

 

Радчук Виталий Владимирович,

А у IIS-пользователя есть доступ на запись в E:/BPMReport ??

может кто налетит на эту проблему, вот решение, должна быть папка 

C:\Windows\SysWOW64\config\systemprofile\Desktop

Показать все комментарии