AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.04.2004, 16:01   #1  
Mechanizm is offline
Mechanizm
Участник
 
54 / 10 (1) +
Регистрация: 01.03.2004
Адрес: Санкт-Петербург
Чтение ИЗ Excel (а не запись в него)
Тут неоднократно обсуждалась запись из X++ в Excel, был такой пример рабочего кода

ExApp = new COM("Excel.Application");
ExApp.Visible(True);
Wbs = ExApp.Workbooks();

Wb = Wbs.Open("C:\MyFile.xls");
Wss = Wb.WorkSheets();
Ws = Wss.Item("MyWorkSheet");
...
Rng = Ws.Range(CurCel);
Rng.Value2(currow);

(кстати, здесь DisplayAlerts хорошо бы поставить)

а как, наоборот, прочитать значение, записано в ячейке, например A1?
info(Rng.Value2()); или info(Rng.Value()); ничего не выдают
можно как-нибудь доступиться через Excel.Workbooks(i).Cells ?
Старый 18.04.2004, 16:30   #2  
AKIS is offline
AKIS
Учаснег
Аватар для AKIS
 
392 / 19 (1) ++
Регистрация: 18.08.2002
Адрес: За морями, за океанами
Rng.Value() и Rng.Value2() - возвращают значение в ячейке. Только их надо присвоить переменной типа COMVariant. А потом уже у этой переменной проверить тип и, в зависимости от него (текст, число...) - присвоить переменной нужного типа свойствами double(), bstr() и т.д...

PHP код:

  
LineNum LineNum;
  
str 50 Description;
  
COMVariant sNL;
......
   
Rng Ws.Range("A"+strltrim(strrtrim(num2str(numrow,5,0,0,0))));
   
sNL Rng.Value();
   if(
sNL.toString() != "VT_EMPTY")
    
LineNum sNL.double();

   
Rng Ws.Range("B"+strltrim(strrtrim(num2str(numrow,5,0,0,0))));
   
sNL Rng.Value();
   if(
sNL.toString() != "VT_EMPTY")
    
Description sNL.bStr();
...

__________________
Strictly IMHO & nothing personal
Старый 18.04.2004, 17:01   #3  
Mechanizm is offline
Mechanizm
Участник
 
54 / 10 (1) +
Регистрация: 01.03.2004
Адрес: Санкт-Петербург
сенькс
а можно как-нибудь через Cells, а не Range?
ActiveWorksheet.Cells(i,j)
Старый 18.04.2004, 19:36   #4  
AKIS is offline
AKIS
Учаснег
Аватар для AKIS
 
392 / 19 (1) ++
Регистрация: 18.08.2002
Адрес: За морями, за океанами
Ээээ.... не пробовал... Хотя интересно было бы!

Я бы попытался присвоить Range все той же переменной COMVARIANT, а потом бы посмотрел в отладчике, какие у нее методы и свойства...

Кстати, а какая у вас версия Аксапты? Если 3.0, то там вроде есть спецклассы для чтения/записи из/в Excel. В 2.5 к сожалению таковых нету
__________________
Strictly IMHO & nothing personal
Старый 19.04.2004, 07:15   #5  
Mechanizm is offline
Mechanizm
Участник
 
54 / 10 (1) +
Регистрация: 01.03.2004
Адрес: Санкт-Петербург
в 2.5 тоже есть класс, SysExcelImport кажется, но я стал сам делать

через Cells уже сделал

Sheet = Sheets.item(1); // получил worksheet
Cells = Sheet.Cells();// это переменная COM
Cell = COM::createFromVariant(Cells.item(x, y));// тоже COM
value = Cell.value();
Старый 29.06.2004, 17:12   #6  
Mechanizm is offline
Mechanizm
Участник
 
54 / 10 (1) +
Регистрация: 01.03.2004
Адрес: Санкт-Петербург
?
а у кого-нибудь при чтении i,jтой ячейки вылетало "метод вызван с неправильным числом параметров"?
Cells.item(i,j), метод item класса Com
Старый 29.06.2004, 17:24   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Так. стало очень интересно!
Ткже было в 1С http://www.axforum.info/forums/showt...&threadid=5054
с тех пор так и не смог побороть эту проблему.
Хотя точно помню, что было время, когда работало нормально.

Здесь тоже самое?
Может здесь получиться разобраться в чем причина?
Старый 01.07.2004, 14:49   #8  
rinugun is offline
rinugun
Участник
Аватар для rinugun
 
26 / 10 (1) +
Регистрация: 04.08.2003
Цитата:
Изначально опубликовано mazzy
Так. стало очень интересно!
Ткже было в 1С http://www.axforum.info/forums/showt...&threadid=5054
Близкие к 1С люди говорят, что могут быть неполадки при попытке получить значение выходного
параметра типа VT_VARIANT по ссылке, эта ошибка в 7.7 недавно исправлена, но исправленный релиз ещё не вышел. То есть, в случае с 1С виновато именно 1С. А вот Excel - это что-то новое.
Старый 03.07.2004, 10:45   #9  
Mechanizm is offline
Mechanizm
Участник
 
54 / 10 (1) +
Регистрация: 01.03.2004
Адрес: Санкт-Петербург
такое ощущение, что глюк именно во взаимодействии Аксапты с COM объектами
как устранить, непонятно
Axapta 2.5 SP3 Rus
Старый 03.07.2004, 13:17   #10  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
-
Старый 04.07.2004, 11:50   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано rinugun
параметра типа VT_VARIANT по ссылке, эта ошибка в 7.7 недавно исправлена, но исправленный релиз ещё не вышел.
23й релиз?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
чтение из Excel текста, состоящего из цифр somebody DAX: Программирование 15 25.01.2013 20:28
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Запись в примечание к ячейке Excel ? Zabr DAX: Программирование 3 28.12.2006 10:26
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:46.