10.10.2016, 12:50 | #81 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: IvanS (1). |
10.10.2016, 12:58 | #82 |
Участник
|
Цитата:
Сообщение от demianimp
Решить эту ошибку нам помог вот этот пост
Последний раз редактировалось IvanS; 10.10.2016 в 13:03. Причина: 1 |
|
10.10.2016, 13:08 | #83 |
Участник
|
|
|
10.10.2016, 13:15 | #84 |
Участник
|
|
|
11.10.2016, 19:00 | #85 |
Участник
|
Цитата:
Сообщение от IvanS
Написал джоб с вызовом на сервере и создание класса Excel также на сервере. Выпадает ошибка:
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "\\Aos-1\AxDocs\1.xls". вот похожий случай, но из другой лечебницы http://infostart.ru/public/196323/
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: Logger (3). |
12.10.2016, 10:03 | #86 |
Участник
|
День добрый товарищи! Пытаюсь скомпилировать классы из проекта в архиве"SysExcel_via_NET", однако возникают ошибки компиляции, среди которых например синтаксическая оiибка в классе SysExcelBorder в методе construct на строке с "Microsoft.Office.Interop.Excel.Border". Подобная ошибка встречается везде где присутствует Microsoft.Office.Interop. Не могу понять почему. Офис установлен, дистрибутив пространства имен Microsoft.Office.Interop.Excel ставил из OpenXMLSDKV25.exe.
Сам грешу на дистрибутив, потому прошу дать ссылку на правильный инсталлятор. |
|
12.10.2016, 11:13 | #87 |
Участник
|
Зарегистрируйте .Net сборку Excel в AOT.
У вас должен появиться такой узел \References\Microsoft.Office.Interop.Excel |
|
|
За это сообщение автора поблагодарили: r2d2 (1). |
12.10.2016, 12:20 | #88 |
Участник
|
|
|
12.10.2016, 15:27 | #89 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: r2d2 (1). |
13.10.2016, 09:46 | #90 |
Участник
|
|
|
14.10.2016, 09:29 | #91 |
Участник
|
Спасибо! Проблема уже решена, удалось скомпилить и немного протестировать классы. Вроде бы все работает. Причем по некоторым причинам пришлось регистрировать 12.0.0.0 версию вместо 14.0.0.0.
|
|
14.10.2016, 10:21 | #92 |
Участник
|
|
|
14.10.2016, 10:27 | #93 |
Участник
|
|
|
24.01.2017, 13:03 | #94 |
Участник
|
Есть проблема открытия файла Excel в пакетнике.
АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше
__________________
3rn.ru |
|
24.01.2017, 14:10 | #95 |
Участник
|
С вероятностью 76% решение проблему вот тут
|
|
|
За это сообщение автора поблагодарили: Logger (1). |
09.04.2018, 20:12 | #96 |
Участник
|
Реализовывал сегодня в Ax2009 вызов функции TextToColumns класса Range из сборки Microsoft.Office.Interop.Excel.
Проблема возникла с тем как запрограммировать параметр Object FieldInfo. Это array форматов данных столбцов. Какой столбец должен быть текстовым, какой числовым, какой с датами и т.д. У меня несколько столбцов имеют тип "Дата" и я этот параметр обязательно должен был инициализировать и передать в функцию. Примеров в гугле даже для C# практически не смог найти. Не говоря уж про примеры из аксапты. А без примеров не совсем очевидно как сформировать этот array. В результате сегодняшних экспериментов получил следующий результат, может кому пригодится . В примере происходит открытие файла csv, в котором построчно хранятся данные, разделённые символом табуляции. После открытия происходит вызов функции TextToColumns для распределения данных по столбцам. X++: Microsoft.Office.Interop.Excel._Application excel; Microsoft.Office.Interop.Excel.Workbooks workbooks; Microsoft.Office.Interop.Excel._Workbook workbook; Microsoft.Office.Interop.Excel._Worksheet ws; Microsoft.Office.Interop.Excel.Range range; System.Type type; System.Reflection.FieldInfo fieldInfo; System.Object missing; Microsoft.Office.Interop.Excel.XlColumnDataType columnDataType; System.Array formatArray; System.Array array; int i; System.String decimalSeparator; System.Object textToColumnsDestination; ; type = System.Type::GetType('System.Reflection.Missing'); fieldInfo = type.GetField('Value'); missing = fieldInfo.GetValue(null); fileFormat = Microsoft.Office.Interop.Excel.XlFileFormat::xlWorkbookDefault; excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); excel.set_Visible(true); workbooks = excel.get_Workbooks(); workbook = workbooks._Open( fileName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); ws = workbook.get_ActiveSheet(); range = ws.get_Range( "A:A", missing); range.Select(); formatArray = System.Array::CreateInstance( System.Type::GetType("System.Object"), 27); for (i=0; i<27; i++) { array = System.Array::CreateInstance( System.Type::GetType("System.Int32"), 2); array.SetValue( i+1, 0); switch (i+1) { case 12,13,14,15: columnDataType = Microsoft.Office.Interop.Excel.XlColumnDataType::xlDMYFormat; break; case 17,18,19: columnDataType = Microsoft.Office.Interop.Excel.XlColumnDataType::xlTextFormat; break; default: columnDataType = Microsoft.Office.Interop.Excel.XlColumnDataType::xlGeneralFormat; break; } array.SetValue( columnDataType, 1); formatArray.SetValue(array,i); } textToColumnsDestination = ws.get_Range("A1",missing); decimalSeparator = ","; range.TextToColumns( textToColumnsDestination , Microsoft.Office.Interop.Excel.XlTextParsingType::xlDelimited , Microsoft.Office.Interop.Excel.XlTextQualifier::xlTextQualifierDoubleQuote , false , true , false , false , false , false , missing , formatArray , decimalSeparator , missing , true );
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: dech (3), Logger (5). |
20.08.2020, 06:07 | #97 |
Участник
|
Привет всем.
Подскажите у кого нибудь имеется последняя актуальная сборка всех классов для работы в AX 2009 ? Может быть есть ветка на github. |
|
08.04.2021, 09:59 | #98 |
Участник
|
О, обсуждение 13-го года Ничего не помогает: System.GC::Collect(); и все такое употребил - процесс висит. Что интересно, при последующем запуске в диспетчере наблюдается второй процесс, который благополучно завершается, а тот первоначальный все остается. Сейчас 21-год,
может решение есть? Собственно, не очень беспокоит, но что за фигня? Так и хочется вчинить иск нашему Биллу. )))) |
|
08.04.2021, 10:47 | #99 |
Участник
|
Убедитесь, что перед вызовом
System.GC::Collect(); очистили все ссылки на Excel объекты. Лучше еще вызвать WaitForPendingFinalizers после System.GC::Collect(); Завершить процесс Excel 2013 |
|
08.04.2021, 12:51 | #100 |
Участник
|
В том-то и штука, что все проделал:
void finalize() { ; //excel.Quit(); workBook = null; workSheet = null; excel = null; workSheets = null; workBooks = null; System.GC::Collect(); System.GC::WaitForPendingFinalizers(); } Однако ж нет |
|
Теги |
.net, ax2009, excel, законченный пример, полезное |
|
|