![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Алекс С. |
|
|||
Unregistered |
Может кто подскажет как обойти/исправить такую "умную" экселевскую фишку, как автоматическая конвертация вещественных чисел, после того как их загрузили в клетки Экселя. Дело в том, что насколько я понимаю, в клетки можно записать только строки, т.е. когда пишу данные пользую FloatToStr и дальше вставляю string-и туда, куда нужно. Но тут возникает такая проблема -- несмотря на предварительное и последующее форматирование клеток, Эксель продолжает считать введённые данные строками (в правом верхнем углу ещё появляется такой зелёный треугольничек). Мелкософт в файле помощи предлагает чудовищное решение данной проблемы когда речь идёт о переводе целой области в числа. Да и поодиночке не знаю как это сделать (программно, в смысле) -- пишущий макро плейер не "ловит" процесс перевода, поэтому VBA кода тоже нет.
Может уже кто сталкивался с подобной проблемой? Подскажите, пожалуйста! |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Всё-таки Excel это не база данных... Чисто теоретически попробуй обратится не через OLE, а через DAO. Посмотри у нас в FAQ - там описан этот способ, только когда будешь писать кверю на создание таблиц, попробуй указать именно те типы столбцов которые должны быть.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Алекс С. |
|
|||
Unregistered |
Да я и не пытаюсь пользовать Эксель в качестве БД, мне нужно просто составить красивую и простую в понимании смету. Для этого я ввожу "сырые" (из сети, БД и т.д.) данные по определённому формату в одну книгу, и хочу чтобы мне эти данные моя прога согласно определённым закономерностям разбросала по шаблонам смет. Вот и всё! Я конечно не знаю, может быть это можно сделать и как-то по другому (например макросами), но меня вполне устраивает и медлительность и некоторая ненадёжность в данном случае (если её можно было бы избежать, то это было бы конечно здорово, но я не знаю как свести её к нулю).
Для всего этого и затеян весь сыр-бор. Самое прикольное, что буквально в одну колонку числа вводятся и становятся числами, а в соседней так и остаются строками при абсолютно одинаковом форматировании клеток. Как я не пытался определить хоть какую-нибудь закономерность в действия Экселя, всё вышло впустую. Именно поэтому мне кажется, что способ подключения (OLE, DAO) не играет особой роли, хоть я это обязательно попробую. Впрочем, я уже готов пойти и извращенческим мелкософтовским путем, главное, чтобы пахало. Так что если кто знает как оформить Paste Special/Multiply в Дельфи, напишите пожалуйста маленький примерчик. Ещё раз спасибо и прошу прощения, если мои просьбы и вопросы звучат слишком глупо -- я всего лишь начинающий ![]() |
|||
|
||||
adminlion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.7.2002 Репутация: нет Всего: нет |
Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"
|
|||
|
||||
Алекс С. |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.8.2002 Репутация: нет Всего: нет |
В общем ответ на собственный вопрос. Пока что обойти эту загвоздку получилось только копируя и вставляя данные из буфера обмена (вроде бы умные люди пишут, что так даже быстрее). Тогда Эксель признаёт числа числами. Есть одно "но" только -- почему-то не сохраняется форматирование клеток, в которые вставляется содержимое буфера. Ну да и ещё надо куда-нить сохранять то, что валяется в буфере перед собственным его использованием. Кстати, ещё одна фишка, которую я обнаружил чисто методом "научного тыка" -- это использование метода PasteSpecial для вставки из буфера, который освобождает от множества ненужных нюансов, как то ввод "лишних" параметров и позволяет вставлять данные в отдельную клетку, а не в целую область.
|
|||
|
||||
P&$ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.7.2002 Репутация: нет Всего: нет |
www.delphikingdom.com/helloworld/excel3.htm
http://xxibek.com.ua/compiler/texts/excelapp.htm Загляни сюда, может найдешь что нужное. ![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Ещё раз предлагаю использовать DAO (пример в нашем FAQ) - там ты обозначишь колонку как поле типа integer и будешь туда писать сразу цифры (а никакие не строки, без всякой там конвертации), тем более что если ты будешь использовать для создания листа 'Create Table' - что я настоятельно рекомендую, то ты прямо укажешь тип данных в столбце.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |