C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Почему не форматируется ячейка в Excel
laifik
Отправлено: 17.09.2003, 15:27


Дежурный стрелочник

Группа: Участник
Сообщений: 70



Уже надоевший всем Excel. Вроде бы уже все работает, а такой пустяк, как форматирование ячейки не хочет. Пишу

// Устанавливаем формат числа для ячейки
Sh.OlePropertyGet("Cells", 1, 9).OlePropertySet("NumberFormat", "0.00");

Нормально компелируется, но призапуске события на передачу данных в Excel пишет сообщение "Ошибка". Если заменяю точку на запятую (как это смотрится в Excel) "0,00", то ошибки не выдает, запускает Excel, выводит данные, но данные выводятся с несколькими знаками после запятой. В чем тут дело? wink.gif
Borgir
Отправлено: 18.09.2003, 05:50


Дежурный стрелочник

Группа: Участник
Сообщений: 48



Попробуй так:

AnsiString temp="0,00";
Sh.OlePropertyGet("Cells", 1, 9).OlePropertySet("NumberFormat", temp.c_str());
laifik
Отправлено: 18.09.2003, 10:45


Дежурный стрелочник

Группа: Участник
Сообщений: 70



А так работает. Спасибо большое, сама почему-то не додумалась. smile.gif
Георгий
Отправлено: 18.09.2003, 22:28


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Объясните мне, почему
CODE
Sh.OlePropertyGet("Cells", 1, 9).OlePropertySet("NumberFormat", "0,00");

не работает, а
CODE
AnsiString temp="0,00";
Sh.OlePropertyGet("Cells", 1, 9).OlePropertySet("NumberFormat", temp.c_str());
работает.
Borgir
Отправлено: 19.09.2003, 06:04


Дежурный стрелочник

Группа: Участник
Сообщений: 48



Наверно потому, что все такого рода параметры для ОЛЕ процедур надо передавать как CHAR а не как STRING. А почему так сделали? Это наверно вопрос к разработчикам. А может это просто для упрощения связи с Визуал Бэйсиком.
Георгий
Отправлено: 19.09.2003, 08:51


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



А неявное преобразование типа разве не подставит то, что надо?

Отредактировано Георгий — 19/09/2003, 09:53
Borgir
Отправлено: 19.09.2003, 10:07


Дежурный стрелочник

Группа: Участник
Сообщений: 48



Видимо в данном месте Билдер опускает руки и сдается smile.gif
Да и вообще я во многих случаях убедился, что лучше использовать явное преобразование типов, а то можно получить совсем не то, что ожидаешь.

Вернуться в Вопросы программирования в C++Builder