Ошибка при экспорте в excel

Обновлено: 07.07.2024

Попробовал реализовать сохранение данных из СтрингГрид в Ексель, все скомпилировалась, программа пишет данные в xls-файл, но иногда не корректно, т.е. иногда все нормально, иногда у некоторых ячеек слетает формат (см. вложение - т.е. у всех ячеек формат ч:мм:сс, а у одной - "общий").
Так же напрягает не совсем корректное открытие файла Екселем (см. так же вложение - если нажать "Да", то файл открывается).

Код, который пишет данные в файл при нажатиии кнопки (название файла берется из edit-a):

В чем может быть проблема? Прошу очень Вашей помощи. __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

StringGrid, как сохранить цвет при экспорте?
Добрый день! Помогите мне пожалуйста. у меня есть stringgrid закрашиваю его так procedure.


Иероглифы при экспорте данных из таблицы StringGrid в файл
Пишу программу, выполняющую расчёты по заданным в программе формулам, используя данные, которые.

Ошибки при экспорте в swf ролик
Выдает ошибки при компиляции, облазил форумы, так и не разобрался, помогите пожалуйста. Скрин.

Так же напрягает не совсем корректное открытие файла Екселем А Вы сохраняйте его нормально, сопоставив с соответствующим расширением.

Я сопоставляю.
Извиняюсь, забыл поместить в листинг:

Где закралась неточность?

Добавлено через 20 минут
Вот так вроде бы нормально сохраняет:

В меню Пуск пункт Выполнить, введите команду regedit и нажмите кнопку ОК.
Найдите и выделите следующий подраздел реестра:
HKEY_CURRENT_USER\Software\Microsoft\Office\<номер версии>\Excel\Security
В меню Правка выберите пункт Создать, а затем — Параметр DWORD.
Введите ExtensionHardening и нажмите клавишу ВВОД.
Щелкните параметр ExtensionHardening правой кнопкой мыши и выберите команду Изменить.
В поле Значение введите значение параметра и нажмите кнопку ОК.


На экране будет отображаться «00001», а по сути это будет число.


Нули, которые находятся перед единицей, ничто иное, как результат форматирования ячейки с использованием лидирующих нулей.


Одним из вариантов для решения этой проблемы является добавление строкового символа в начале строки, например пробел. Но тогда при чтении этих данных придётся эти данные дополнительно обработать, например с помощью функции СокрЛП().

Перед тем, как описать другой вариант выгрузки подобных данных, который считаю наиболее удобным и корректным, необходимо понимать то, что когда Excel получает данные, то он автоматически и без нашего ведома преобразует «строки из цифровых символов» в «числа».

Excel, это программа. Какие в неё алгоритмы и механизмы заложили, так она и работает. И создавали её такие же программисты, только на другом языке. Неужели они не предвидели подобную ситуацию? Логическое предположение, говорит, что «Да».

Басня "ЛАРЧИК" - одна из первых оригинальных басен Крылова.

Случается не редко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
К кому-то принесли от мастера Ларец.
Отделкой, чистотой Ларец в глаза кидался;
Ну, всякий Ларчиком прекрасным любовался.
Вот входит в комнату механики мудрец.
Взглянув на Ларчик, он сказал: "Ларец с секретом,
Так, он и без замка;
А я берусь открыть; да, да, уверен в этом;
Не смейтесь так исподтишка!
Я отыщу секрет и Ларчик вам открою:
В механике и я чего-нибудь да стою.
Вот за Ларец принялся он:
Вертит его со всех сторон
И голову свою ломает;
То гвоздик, то другой, то скобку пожимает.
Тут, глядя на него, иной
Качает головой;
Те шепчутся, а те смеются меж собой.
В ушах лишь только отдается:
"Не тут, не так, не там!" Механик пуще рвется.
Потел, потел; но, наконец, устал,

От Ларчика отстал
И, как открыть его, никак не догадался:
А Ларчик просто открывался.

И вот, мы подошли к самой сути:

«'» - символ апострофа.

Для того, чтобы отменить попытку преобразовать строку в число, достаточно в начале выгружаемой строки добавить символ апострофа. Это и будет тем самым сигналом для Excel. Теперь, выделив ячейку с выгруженной строкой, в строке формул мы увидим «'00001».


А что теперь делать с апострофом? А ничего делать не надо. Excel, при всех операциях, будет работать с этими данными как со строкой «00001».


Одно из самых важных преимуществ данного способа выгрузки является то, что и при считывании этого значения из внешних программ будет передано значение «00001», т.е. строка без апострофа. Необходимость дополнительной обработки (СокрЛП) отпадает.

А вообще, для чего это нужно?

Когда приходится постоянно сталкиваться с загрузками и выгрузками через книги Excel возникает желание автоматизировать часть работы при помощи универсальных функций. Мне пришлось столкнуться с одной такой функцией, но именно из за проблем описанных ранее, все загружаемые данные преобразовывались в строку. И при чтении, необходимо было конвертировать строки в даты, числа и булево. Что является явным недостатком и неудобством при использовании универсальных средств.

В следующей статье будет предложена универсальная обработка для экспорта данных из 1С в Excel. Мне встречались обработки, которые для получения данных из Excel используют межплатформенного объекта COMSafeArray, что в разы увеличивает чтение данных. Преимущество предлагаемой обработки в том, что она выгружает данные именно с использованием этого же самого COMSafeArray и тоже, скорость выгрузки значительно увеличивается. Её необходимо будет «допилить». Всё, что необходимо сделать, так это изменить в ней запрос и передать в универсальную функцию выгрузку запроса или таблицу значений. У вас появится инструмент на все случаи подобных выгрузок. Все нюансы, с которыми мне пришлось столкнуться при выгрузке, будут описаны в следующей статье.

Читайте также: