Использование библиотеки 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].
Нравится
Приветствую
советую посмотреть и скачать на данном сайте библиотеки 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