Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel копирование ячеек в другую книгу C# 
V
    Опции темы
Albinos_x
Дата 24.7.2013, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



Доброе время суток!

ОС: Window Server 2003 R2 Enterprise, Windows Server 2008 R2 Standart
Office: ms Office Standart 2007
среда: Интерпритатор СЭД Docsvision

столкнулся с такой проблемой:
Мне нужно скопировать группу ячеек из одной книги Excel в другую.
Применяю следующий код:
Код
...
           process.LogMessage("get last cells xls");
           Cells = WorkSheetCSV.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, WorkSheetXLS, null);
           process.LogMessage("connect cells");
           Range = Cells.GetType().InvokeMember("SpecialCells", BindingFlags.GetProperty, null, Cells, new object[]{11 /*xlCellTypeLastCell*/});
           process.LogMessage("get last cells range");
           int tmpIntXLS=Convert.ToInt32(Range.GetType().InvokeMember("Row", BindingFlags.GetProperty, null, Range, null))+1;
           process.LogMessage("Num row + 1: "+tmpIntXLS.ToString());

           process.LogMessage("Copy cells");
           int tmpIntCSVXLS = tmpIntXLS+tmpInt;
           process.LogMessage("get new last cells: "+tmpIntCSVXLS.ToString());
        RangeXLS = WorkSheetXLS.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, WorkSheetXLS, new object[]{"A"+tmpIntXLS.ToString()+":V"+tmpIntCSVXLS.ToString()});
           process.LogMessage("get full range xls");
           Range = WorkSheetCSV.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, WorkSheetCSV, new object[]{"A1:V"+tmpInt.ToString()});
           process.LogMessage("Get range CSV");
           Range.GetType().InvokeMember("Copy", BindingFlags.SetProperty, null, Range, new object[] { RangeXLS }); // <<<<--- тут ошибка
...


вылетает ошибка: Exception has been thrown by the target of an invocation.: Нельзя установить свойство Copy класса Range

При этом код в VB с подобными аргументами срабатывает нормально:
Код

    Dim Range1 As Range
    Dim Range2 As Range
    
    Set Range1 = Range("A1:A3")
    Set Range2 = Range("C1:C3")
    Range1.Copy Range2


реализация через copy и paste не подходит, т.к. система многопоточная и в это время может быть открыто несколько экземпляров Excel

Подскажите, что я делаю не так?

спасибо.



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.7.2013, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



извините за беспокойство.
Проблема решена.

необходимо было использовать:
Код

           Range.GetType().InvokeMember("Copy", BindingFlags.GetProperty, null, Range, new object[] { RangeXLS });



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0949 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.