Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52

Как организовать взаимодействие C# с окном "Найти" в Excel?

10.12.2015, 23:16. Показов 933. Ответов 14

Студворк — интернет-сервис помощи студентам
Привет!

Есть задача. Программа должна взаимодействовать с поиском Excel. А именно программа вызывает в Excel окно поиска и добавляет слова по которым он должен быть произведен. Затем найденные список данных возвращаются в программу и она с ним работает.

Структура файла Excel: 1 столбец, 20 тыс строк.

Интересен подход к взаимодействию с поиском Excel'я. Как же построить поиск в Excel средствами C#?
У кого-то из Вас была подобная (приближенно) практика? Опыт? Отправьте, пожалуйста, в ответ полезные ссылки или исходники. Буду очень признателен. Я разберусь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2015, 23:16
Ответы с готовыми решениями:

Взаимодействие со сторонним окном
Не могу разобраться с взаимодействием со сторонним окном. Почитал, выбрал библиотеку autoit. AutoItX3Class a = new...

Взаимодействие со свёрнутым окном
Добрый день Пытаюсь реализовать (а вернее будет сказать разобраться в инструментах реализации) отправку кликов/команд/строк в...

Взаимодействие со свёрнутым окном
Добрый день Пытаюсь реализовать (а вернее будет сказать разобраться в инструментах реализации) отправку кликов/команд/строк в...

14
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
11.12.2015, 04:29
Monty161, для того, что бы написать в окно поиска нужно его найти https://social.msdn.microsoft.... rdesktopru. Отправить сообщения с новым текстом: https://msdn.microsoft.com/ru-... s.85).aspx.

Добавлено через 1 минуту
Для поиска вам пригодиться программка spy++ https://msdn.microsoft.com/ru-... 60756.aspx
1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
11.12.2015, 08:38
Зачем эти адские костыли?
Microsoft.Office.Interop.Excel - подключаешься к открытому Excel, получаешь диапазон данных,
делаешь поиск, либо пробуешь вызвать поиск. Но, взаимодействие с окном - бред по моему.
Неужели нужно строго именно так?

Добавлено через 3 минуты
Цитата Сообщение от Monty161 Посмотреть сообщение
У кого-то из Вас была подобная (приближенно) практика? Опыт?
Если что, может здесь писать - по возможности отвечу.
Цитата Сообщение от Monty161 Посмотреть сообщение
20 тыс строк.
UsedRange, get_Value(): 1.5 seconds [fastest] - пишут, что это наиболее быстрые способы.
Читать тут.
1
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
14.12.2015, 22:43  [ТС]
Woldemar89, есть вопрос. Файл-это черный список. Каждая строка того файла Excel представляет собой домен. Моя программа должна генерировать набор доменов из частей доменов файла (т.е брать домены, разбивать их на части, случайным образом выбирать части и лепить новые). А потом я должен проверять, является ли сгенерированный домен запрещенным (то бишь в черном списке он) или нет.

К примеру:
Допустим у меня в черном списке лежит cs.idey.net
Программа сгенерировала da.idey.net. В этом случае новый домен не черносписочный (если только idey.net не в черном списке)

Проверку придется осуществлять поиском по дереву. Дерево строится из доменов черного списка.

Я в этот список закидываю сплитованный домен из черного списка.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class DomainLevelsName {
        public string TLD;
        public string SLD1;
        public string SLD2;
        public string SLD3;
        public string SLD4;
        public string SLD5;
        public string SLD6;
        public string SLD7;
        public string LLD;
}
        public DomainLevelsName(string TopLevelName, string SecondLevelName1, string SecondLevelName2, string SecondLevelName3, string SecondLevelName4, string SecondLevelName5, string SecondLevelName6, string SecondLevelName7, string LowerLevelName)
        {
            this.TLD = TopLevelName;
            this.SLD1 = SecondLevelName1;
            this.SLD2 = SecondLevelName2;
            this.SLD3 = SecondLevelName3;
            this.SLD4 = SecondLevelName4;
            this.SLD5 = SecondLevelName5;
            this.SLD6 = SecondLevelName6;
            this.SLD7 = SecondLevelName7;
            this.LLD = LowerLevelName;
        }
List<DomainLevelsName> choicelist = new List<DomainLevelsName>();
1)Я правильно поступил, что сделал список по классу?

2)Меня категорически смущает конструктор класса.
Во-первых, не все домены обладают таким числом уровней и в конструктор приходится запихивать пустую строку.

Во-вторых, мой рендом в качестве кусочков использует и эти самые пустые строки. В длинных случайных доменах получается бред типа ahsjdha....co.uk или eruwer..com. Но иногда конечно проскакивают нормальные. Но в общем случае работает хорошо только для двух уровней.

3) Может быть сделать список динамических списков?
Мне хотелось бы найти конструкцию, которая бы позволила мне осуществить и генерацию, и построение дерева, и поиск на запрещёнство. Если сталкивались с таким, то пожалуйста подкиньте идею.

Потому что у меня тут реально затык. Придумываю как его обойти.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
14.12.2015, 23:10
Monty161, для начала опишите изначальную задачу, а то вдруг решаете через пятую точку,
давайте начнем с вопроса - зачем вам все это? Какой функционал хотите реализовать?

Добавлено через 3 минуты
Да и вообще, как это к теме относится про "Найти в екселе?" файл-чсписок - в екселевском формате?
Цитата Сообщение от Monty161 Посмотреть сообщение
Дерево строится из доменов черного списка.
Тогда чет бред какой то. Дерево из екселевского файла через "Найти".

Один вопрос - одна тема, если вопрос не отностится к "Найти в екселе?" - создавайте новую тему.
0
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
14.12.2015, 23:44  [ТС]
Woldemar89,
1)идея с поиском в Excel была связана с упрощением поиска и некоторой группировкой. Я от неё отказался

2)Моя программа - это консольное приложение. Оно работает с файлом .csv, в котором находится 20 000 доменов. Это черный список

3)Моя задача: взять из черного списка домены и нагенерировать новых, используя части черносписочных доменов. Генерация происходит случайным образом.
Далее, каждый домен из генерированного списка я должен проверить и вывести результат проверки для каждого. Что значит проверить?

К примеру:
Допустим у меня в черном списке лежит cs.idey.net
Программа сгенерировала da.idey.net. В этом случае новый домен не черносписочный (если только idey.net не в черном списке) и надо вывести "бла-бла всё хорошо"

Что мне необходимо (мой план):
1) Произвести запись в массив строк из файла .csv

2) Реализовать сплит домена

3) Создать конструкцию (склоняюсь к списку динамических списков ), которая будет хранить каждый домен в "разобранном" виде. При этом конструкция должна позволять обращаться к каждой части домена

4) Реализация конструкции осложняется тем,что некоторые домены могут иметь много уровней, а другие всего два. Это может помешать адекватному рендому

5) Используя конструкцию случайным образом выбрать некоторое число её элементов, затем у них выбрать тоже случайным образом части и слепить новый список доменов

6) Реализовать черный список в виде дерева. Уровни дерева = уровень доменов. 1-й уровень - TLD. Но опять же: реализация дерева зависит от конструкции

7) Используя поиск по дереву определить является ли сгенерированный домен запрещенным

8) Вывести результат для каждого сгенерированного домена: запрещен или нет

Добавлено через 2 минуты
Woldemar89,
Вот я и хочу выяснить какого типа конструкцию стоит использовать. Поэтому и спрашиваю совета. Буду благодарен. Дальше разберусь.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
14.12.2015, 23:54
Цитата Сообщение от Woldemar89 Посмотреть сообщение
давайте начнем с вопроса - зачем вам все это?
Все норм расписали, я более менее и раньше все понимал, но на вопрос то ответьте.

Цитата Сообщение от Woldemar89 Посмотреть сообщение
а то вдруг решаете через пятую точку
Это все к тому, чтобы понять, что ваш способ - единственный, или требования именно такие.

Добавлено через 2 минуты
Цитата Сообщение от Monty161 Посмотреть сообщение
Генерация происходит случайным образом.
А повторы? Причем тут случайность? Может перебор?
Цитата Сообщение от Monty161 Посмотреть сообщение
Это может помешать адекватному рендому
Тот же вопрос - может перебор все таки?
И зачем дерево?

Добавлено через 2 минуты
И если все таки перебор - он у вас долго продлится))
0
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
15.12.2015, 00:09  [ТС]
Woldemar89,

1)повторы могут быть. Это не проблема.

2) Как причем случайность?) Мне же надо слепить список доменов для дальнейшей проверки. Вот допустим у меня есть список, в котором каждый домен представлен в "разобранном" виде ( то бишь строки ). Мне нужно сгенерировать N доменов с двумя уровнями.

C#
1
2
3
4
5
6
7
8
9
10
11
            for (int i = 0; i < N; i++)
            {
                        s1 = choicelist[rand.Next(0, choicelist.Count - 1)].LLD;
                        s2 = choicelist[rand.Next(0, choicelist.Count - 1)].TLD;
                        concatS = s1 + '.' + s2;
                        randomlist[i] = concatS;
                        s1 = "";
                        s2 = "";
                        concatS = "";
            }
        // на выходе будет массив из N сгенерированных доменов
3) Перебор - это долго. А если бы у меня несколько миллионов доменов было бы?

4) Дерево нужно построить для того, чтобы поиск был быстрее, чем перебор
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.12.2015, 00:11
А вы упертый Третий и последний раз повторяю вопрос.
Цитата Сообщение от Woldemar89 Посмотреть сообщение
зачем вам все это?
0
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
15.12.2015, 00:29  [ТС]
Woldemar89, задача у меня есть такая)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.12.2015, 14:29
Цитата Сообщение от Monty161 Посмотреть сообщение
задача у меня есть такая)
Генератор адресов лохотронов редиректов ? Такое наверняка запрещено на форуме обсуждать.
Ну или утаиваете гениальную идею, что навряд ли.

Класс DomainLevelsName выглядит странно.
Цитата Сообщение от Monty161 Посмотреть сообщение
Может быть сделать список динамических списков?
Я, наверное, так бы и поступил.

Дерево на примере.
C#
1
2
3
4
5
6
7
8
9
10
11
class Node
{
   public string Data { get; set; }
   public Node Left { get; set; }
   public Node Right { get; set; }
 
   public Node(string _data)
   {
      this.Data = _data;
   }
}
0
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
15.12.2015, 14:45  [ТС]
Woldemar89,
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Генератор адресов лохотронов редиректов ?
Я не лохотронщик
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.12.2015, 14:47
Monty161, я не утверждал, там знак вопроса был Чего скрывать то там можно?
0
 Аватар для Monty161
6 / 6 / 6
Регистрация: 01.09.2015
Сообщений: 52
15.12.2015, 14:54  [ТС]
Woldemar89, а я ничего не скрывал) я выложил условие, план. моя цель: разобраться. Повысить уровень знаний в деле работы с данными средствами C#. А задачу эту я нашёл на GitHub.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.12.2015, 15:08
Сразу же не сказал С третьего раза только
А время на что попало тратить неохота.

Часть файла бы привел еще.

Добавлено через 1 минуту
А вообще я писал уже что нужно сделать -
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Один вопрос - одна тема, если вопрос не отностится к "Найти в екселе?" - создавайте новую тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2015, 15:08
Помогаю со студенческими работами здесь

Взаимодействие слушателя с окном
Доброго времени суток. Спасибо что уделили моей проблеме своё время. И так, я хочу создать игру - кликер. В окне должно содержаться : ...

Как организовать взаимодействие кнопок?
Страничка сайта(на wp) с 7-ю кнопками(у каждой две задачи-скачать(линк или файл) и перейти на страницу) На странице-текст типа-Если не...

Взаимодействие с кнопками. как организовать
Доброго времени суток) Работаю в visual studio 2010. На форме 32 кнопки с именами button1, button3, ... button 10... button64 В...

Как организовать взаимодействие процессов ?
Добрый день! Подскажите, пожалуйста, какие инструменты подходят для реализации следующей задачи. Процесс1 наполняет буфер...

Как организовать межпрограммное взаимодействие?
Есть два приложения. Оба они одноврмененно запущены. Есть ли возможность заставить их общаться напрямую? Я понимаю, что можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru