Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2019, 03:18   #1
NoSiK
Пользователь
 
Регистрация: 17.11.2009
Сообщений: 20
По умолчанию c# и excel в режиме реального времени

Здравствуйте, прошу помощи с задачей : Открыт ексель в нем ведется работа, при нажатии на кнопку на форме, данные из datagridview копируются в строку excel, где выделена ячейка, столбцы для ячеек указываются на форме рядом с гридом, главная задача состоит в том, чтобы данные excel обновлялись в реальном времени, без закрытия/открытия, я не прошу писать за меня программу, прошу написать метод доступа к уже открытому екселю и как лучше получить номер строки в которой выделена ячейка.
NoSiK вне форума Ответить с цитированием
Старый 02.07.2019, 09:10   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Через Interop.Excel что нибудь пробовали?? В даже на MSDN есть статья с примерами.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.07.2019, 09:11   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Interop
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.07.2019, 09:15   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от NoSiK Посмотреть сообщение
прошу написать метод доступа к уже открытому екселю и как лучше получить номер строки в которой выделена ячейка.
Никак Вы доступ не получите.
Используйте имитацию клавиатурных команд - скопируйте нужную информацию в буфер обмена и пошлите Excel команду вставить текст.

Но работать это всё будет очень шатко и криво.

Я бы менял логику - раз нужно это в Excel, то всё в Excel и делайте - и вставки, и обработку и всё остальное. C# при данном подходе - не при делах.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2019, 09:38   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Никак Вы доступ не получите.
Чойто ... Можно сделать либу взаимодействия через COM. со стороны экселя в VBA прописать команды и действия на них. И гонять между приложением и экселем все что душе угодно.
Я так для Word делал в одном проекте. И очень даже все стабильно пашет.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.07.2019, 09:52   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Чойто ... Можно сделать либу взаимодействия через COM. со стороны экселя в VBA прописать команды и действия на них. И гонять между приложением и экселем все что душе угодно.
Я так для Word делал в одном проекте. И очень даже все стабильно пашет.
да. согласен. так можно.

я имел в виду, что не трогая Excel, используя только одну сторону (на которой C#) ничего путного не выйдет.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2019, 00:39   #7
NoSiK
Пользователь
 
Регистрация: 17.11.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да. согласен. так можно.

я имел в виду, что не трогая Excel, используя только одну сторону (на которой C#) ничего путного не выйдет.

Мне подсказали как сделать, все прекрасно работает в реалтайме и без костылей:
Код:
            Excel.Application xlApp; //Excel
            Excel.Workbook xlWB; //рабочая книга
            Excel.Worksheet xlSht; //лист Excel

            //берём открытый Excel или создаём новый, если Excel не открыт
            xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
            //берём активную книгу в Excel
            xlWB = xlApp.ActiveWorkbook;
            //берём активный лист в книге (или первый лист в книге)
            xlSht = xlWB.ActiveSheet; //или xlWB.Worksheets[1];    

            int Row = xlApp.ActiveCell.Row; //номер строки Активной ячейки
            int Col = xlApp.ActiveCell.Column; //номер столбца активной ячейки

            xlApp.ActiveCell.Value = "Тест"; //ActiveCell - ячейка с курсором на активном листе
                                             //xlSht.Range["A1"].Value = 777;
            xlApp.Visible = true;
NoSiK вне форума Ответить с цитированием
Старый 04.07.2019, 00:46   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так тут большая часть сообщений про это и есть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2019, 05:37   #9
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от NoSiK Посмотреть сообщение
Мне подсказали как сделать
А разве через OLE можно подключиться к Excel, который уже запущен, до программы?
Black Fregat вне форума Ответить с цитированием
Старый 04.07.2019, 11:24   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

да. работает. я ошибался.


Цитата:
Сообщение от Black Fregat Посмотреть сообщение
А разве через OLE можно подключиться к Excel, который уже запущен, до программы?
да. получается, что можно.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в режиме реального времени маргарита123 JavaScript, Ajax 0 27.05.2016 11:40
Вывод значения на форму в режиме реального времени calypso Общие вопросы C/C++ 0 28.05.2014 21:02
Счетчик обратного действия в режиме реального времени Панчо PHP 1 20.09.2010 20:37
как рисовать график в режиме реального времени? помогите пожалуйста Master_S7 Общие вопросы Delphi 2 05.06.2009 22:04
переброс данных из Excel в Delphi в реальном режиме времени Машутка Общие вопросы Delphi 3 27.09.2008 07:19