![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Atreides |
![]()
Сообщение
#1
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Впервые в жизни столкнулся с такой задачкой, посмотрел на подобе вроде нету. Мне нужно выдернуть данные из ексельного файла со сложной структурой данные, которые могут быть не нормированы, т.е. не ограниченны по длине. Запись произвести в стринггрид или дбгрид. Нужны следующие поля А 5 или 10, т.е. те в которых есть надпись НОД 3, все D с названиями, причем коды нужно писать отдельно, все H соответствующие D, и все B с датами месяца и года в разные ячейки. Пробовал фильтрами, но это только отсеивает, а не прописывает. Надо прописать, что бы после можно было портировать данные эти в ораклинную базу. Меня еще останавливает, то что нельзя задать ячейки железно, на тот случай, если таблица пополнится новыми позициями
Прикрепленные файлы ![]() -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Я, может, чего-то не понимаю, но если ты знаешь, что в ячейке A5 находится текст "НОД 3", зачем тебе читать это поле? Я тебе и так скажу, что оно содержит. Не поверишь, но оно содержит "НОД 3".
Цитата все D с названиями Ну, и проходи по ячейкам "D1" .. "Dдо_посинения", проверяй на пустоту и если не пусто - то нашел, что тебе нужно, можешь отсекать все после последнего пробела и делить информацию на Название и Код. Поскольку при этом ты знаешь номер строки, из которой это все читалось, то элементарно вытягивается содержимое соответствующих полей из столбцов B и H. В чем проблема, я не пойму?Оракла не держу. Если интересно - могу набросать программу, которая из присоединенного тобой файла выдерет всю нужную информацию (Название/Код/Что_там_у_тебя_в_столбце_B/Дебет), и занесет ее в StringGrid на форме, или в базу MS Access... Только что там с A5/A10 - надо бы уточнить... |
Atreides |
![]()
Сообщение
#3
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Я писал вот так...
unit Unit1; Просто "Нод"ы могут быть же после данных, как с этим быть. А можно пример как вести проверку? Да и программку хотелось бы все глянуть, интересно. -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата А можно пример как вести проверку? Да и программку хотелось бы все глянуть, интересно. Ну, глянь:procedure LockGrid(Grid: TStringGrid);Тут можно еще поубирать лишние действия, вроде многократных преобразований IntToStr одного и того же числа, можно забросить обращения к Cells под один With, будет выглядеть гораздо красивее. Но код и так работает достаточно быстро за счет того, что Грид залочен, и постоянного обновления, съедающего основное время, не происходит... |
Atreides |
![]()
Сообщение
#5
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
так, это понятно, а вот как мне бы отсеять из таблички данные по билетам и багажу, как выполнить проверку по значению в ячейки. и итого строки не нужны. Как вытащить данные из объединенных ячеек, типа даты? В одну табличку, все билеты, в другую багаж. И после как бы мне передавать эти данные в БД, по какому параметру? Знаю, что через SQL запросы и компоненты DataSet и SocketConnection.
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата а вот как мне бы отсеять из таблички данные по билетам и багажу Можно по-русски? Что откуда отсеять? Что получить надо и ГДЕ? Если у тебя задача что-то сделать непосредственно в XL-файле, то при чем тут вообще Дельфи? VBA тебе в помощь, и делай все, что нужно... А потом сделаешь экспорт в БД (наверняка это возможно), Дельфи вообще не нужно ни для чего, кроме как запустить VBA-код. Если же у тебя задача вытянуть из XLS определенную информацию - то что за проблема? Как обращаться к ячейке я тебе показал... Ты же знаешь, что у тебя каждая графа означает, я-то этого не знаю, названия "Дата прово" и "Ссылочный № до" мне ничего не говорят, например (а слово "багаж" я вообще только что от тебя в первый раз услышал, в присоединенном файле о нем - ни слуху ни духу)... Вот, к примеру, что должно быть в базе, если есть документ, присоединенный тобой к посту №1? По полям, желательно, напиши, что НАДО копировать, а чего - НЕ НАДО.Цитата и итого строки не нужны Не нужны - убери строку №62... Цитата И после как бы мне передавать эти данные в БД, по какому параметру? Опять за свое... У тебя данные пишутся в СтрингГрид, как хочешь, так и заливай их в базу, на кой черт тебе еще SocketConnection понадобился? Тут одного ДатаСета - за глаза... |
Atreides |
![]()
Сообщение
#7
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Файл эксель я не могу сам лично править, его генерирует, как отчет информационная система. В грид я решил выводить для наглядности пользователю, а так мне нужно забрать данные из столбцов и прописать в базу. Причем надо прописывать билеты и грозобагаж в отдельные базы, остальные выписки не нужны. Строки нужны только с Датой, названием и кодом станции, НОДА ( ну там 3 или 7) и дебет. Остальное нафиг не нужно, все там итого и так далее. Трабл в том, что данные не подряд идут, а с разрывами и тем более разнородные, выходит проверку делать на содержание определенного участка. Т.е. находим строки «Билеты» и отправляем в БД содержимое из блока билеты, но только дату, код и название станции, и дебет с НОД. Так же и с грузобагажом.
Сообщение отредактировано: Atreides - 19.12.2009 18:14 Прикрепленные файлы ![]() -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Atreides |
![]()
Сообщение
#8
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
А как можно получить адрес ячейки из екселя содержимое, которой удовлетворяет поисковой фразе?
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Atreides |
![]()
Сообщение
#9
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
т.е. мне нужно найти и сверить сумму значений в столбце (это я выполнил) со значение в ячейки А65. Но не хотелось бы железно присваивать ячейку на случай её расширения.
unit Unit1; Сообщение отредактировано: volvo - 5.04.2010 15:37 -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
![]() ![]() |
![]() |
Текстовая версия | 6.08.2025 6:20 |