| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Excel. Проблемы с чтением. |
| Автор: AVronsky 16.11.2011, 14:29 | ||
| Имеем EXCEL файл типа, 3 столбца: вс 00:00:00 23:59:59 вт 00:00:00 16:54:59 вт 16:50:00 23:59:59 пн 00:00:00 23:59:59 При чтении данных из EXCEL файла методом:
и записи в TXT файл получаем лог: ('вс','00:00:00','23:59:59') ('вт','00:00:00','0,704849537037037') ('вт','0,701388888888889','23:59:59') ('пн','00:00:00','23:59:59') Что не так ? |
| Автор: 14SatanA88 16.11.2011, 15:27 | ||
|
| Автор: Данкинг 16.11.2011, 15:29 |
| А что не так-то? Какие значения есть - такие и получились. Добавлено через 1 минуту и 6 секунд А, понял. Вообще как вариант - изначально попробовать установить в ячейке нужный формат, т.е. текстовый. |
| Автор: AVronsky 16.11.2011, 16:09 | ||||||
Ошибка: "Could not convert variant of type (Dispatch) into type (Double)" |
| Автор: Данкинг 16.11.2011, 16:31 |
| AVronsky, если у тебя всего 3 столбца, не проще вместо RANGE считать в цикле каждую ячейку? |
| Автор: AVronsky 16.11.2011, 16:45 | ||
1. Их далеко не 3 2. Это все равно не снимает проблемы. |
| Автор: 14SatanA88 16.11.2011, 16:49 |
| AVronsky, с помощью магии и правильного положения звезд у меня все работает приаттачьте проект и тот самый злополучный файл xls, я посмотрю |
| Автор: Данкинг 16.11.2011, 17:20 |
| Мне кажется, там в ячейках ссылка / формула стоит, а не значение как таковое. |
| Автор: Данкинг 17.11.2011, 09:25 |
Ну правильно, я и говорю, что у ТС там вероятно ссылка на что-то указана. |
| Автор: AVronsky 17.11.2011, 09:47 |
| В связи с тем, что XLS файл размером более 8к строк ведется и корректируется ручками разными людьми, за форматом ячеек никто не следит договорился о смене формата данных в столбце с 00:00:00 на 00|00|00. В дальнейшем меняю "|" на ":" обратно через StringReplace. Всем спасибо. PS: Для 14SatanA88 файл прилагаю. Для Данкинг - формулы никакой нет |
| Автор: 14SatanA88 17.11.2011, 12:38 | ||
там у вас в разных ячейках разный формат там где формат текстовый, vartostr забирает в нормальном представлении (например, "23:59:59") там где формат ячеек указан как общий, функция отдает что-то типа "0,701388888888889" а timetostr вообще валится из-за несоответствия типов следующий код решает вашу проблему
|
| Автор: AVronsky 17.11.2011, 13:51 |
| Спасибо, так работает. |