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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2015, 14:27   #1
Arsenikum
Пользователь
 
Регистрация: 03.07.2015
Сообщений: 11
По умолчанию Работа с Excelем

Добрый день всем! Есть такой код, который выдергивает из Эксель файла все данные со страницы, а мне нужны лишь те, которые я сам захочу выделить, причем при новом запуске программы, разное выделение ячеек. Проблема как мне кажется в строке Range myRange = ExcelWorkSheet.UsedRange, но я не знаю на что ее нужно заменить. Заранее спасибо, очень нужен ответ.
Код:
       ObjExcel.Visible = true;
                ObjExcel.UserControl = true;
                ExcelWorkBook = ObjExcel.Workbooks.Open(path);
                ExcelWorkSheet = new Microsoft.Office.Interop.Excel.Worksheet();
                ExcelWorkSheet = ExcelWorkBook.Worksheets.get_Item(1) as Worksheet;
                if (ExcelWorkSheet == null)
                    MessageBox.Show("Ошибка входного файла: Нельзя найти первый лист с действительной информацией");
                Range myRange = ExcelWorkSheet.UsedRange;

                object[,] myObjects = (object[,])(myRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault));
                for (int R = myObjects.GetLowerBound(0); R <= myObjects.GetUpperBound(0); R++)
                    for (int C = myObjects.GetLowerBound(1); C <= myObjects.GetUpperBound(1); C++)
                    {

Последний раз редактировалось Arsenikum; 14.08.2015 в 14:31.
Arsenikum вне форума Ответить с цитированием
Старый 14.08.2015, 14:45   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
// в myRange выбрать ячейку на пересечении пятой строки и 1 столбца, т.е. А5 или R5C1
Range myRange = ExcelWorkSheet.Cells[5, 1];

// Выделить диапазон ячеек B10:C15
Range myRange = ExcelWorkSheet.get_Range("B10", "C15");

// Можно еще поиск запользовать
// В myRange выделим ячейку, в которой написано "Велосипед"
Range myRange = ExcelWorkSheet.UsedRange.Find(What: "Велосипед", LookIn: Excel.XlFindLookIn.xlValues);
pu4koff вне форума Ответить с цитированием
Старый 14.08.2015, 15:05   #3
Arsenikum
Пользователь
 
Регистрация: 03.07.2015
Сообщений: 11
По умолчанию

pu4koff, спасибо за ответ, я знаю про все что вы написали, но в чем вся соль, в том что я не знаю заранее какой диапазон ячеек в столбце у меня будет, этот диапазон будет выбирать пользователь
Arsenikum вне форума Ответить с цитированием
Старый 14.08.2015, 15:11   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Киньте на форум пару TextBox'ов и пусть себе туда пользователь вбивает адреса ячеек, а в коде будет
Код:
Range myRange = ExcelWorkSheet.get_Range(textBox1.Text, textBox2.Text);
pu4koff вне форума Ответить с цитированием
Старый 14.08.2015, 15:48   #5
Arsenikum
Пользователь
 
Регистрация: 03.07.2015
Сообщений: 11
По умолчанию

Понял, спасибо. А какой-нибудь получше способ есть, я вот думаю чтобы пользователь сам выделил диапазон ячеек, а он в свою очередь заносится в буфер обмена, может из него как-то можно вытащить данные и занести в массив?)
Arsenikum вне форума Ответить с цитированием
Старый 14.08.2015, 16:20   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Тут уже эксель не при делах, тут с буфером обмена работать нужно.
Код:
var c = Clipboard.GetData(DataFormats.CommaSeparatedValue);
в переменной c будет строка в формате CSV (данные из ячеек, разделенные символом табуляции кажись)
pu4koff вне форума Ответить с цитированием
Старый 14.08.2015, 16:45   #7
Arsenikum
Пользователь
 
Регистрация: 03.07.2015
Сообщений: 11
По умолчанию

Просто хотел уточнить у вас через буфер можно сделать или как то по-другому нужно?) а еще по поводу вашего ответа, как в переменной может быть строка?))
Arsenikum вне форума Ответить с цитированием
Старый 14.08.2015, 16:59   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А попробовать приведенную строчку скомпилить, скопировать в буфер что-то из ёкселя и посмотреть чего там в переменную c упадёт?
Можно и автоперехват буфера сделать, если надо.

Последний раз редактировалось pu4koff; 14.08.2015 в 17:01.
pu4koff вне форума Ответить с цитированием
Старый 17.08.2015, 09:37   #9
Arsenikum
Пользователь
 
Регистрация: 03.07.2015
Сообщений: 11
По умолчанию

не подскажете как это сделать?
Arsenikum вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ems api: корректная работа только при явном указании города mrdemkin JavaScript, Ajax 3 02.03.2015 18:23
Работа с псевдослучайными последовательностями (ПСП). Работа с цветом.(Pascal) Shick Помощь студентам 7 11.12.2013 19:25
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00