1 / 1 / 1
Регистрация: 15.05.2014
Сообщений: 30
|
|||||||||||
1 | |||||||||||
Иероглифы при экспорте данных из таблицы StringGrid в файл17.09.2015, 23:02. Показов 2522. Ответов 6
Метки нет (Все метки)
Пишу программу, выполняющую расчёты по заданным в программе формулам,
используя данные, которые загружаются из XML-файлов. На компьютерах, где возможно будет использоваться программа может отсутствовать какой-либо офисный пакет (ни MS Office, ни OpenOffice или LibreOffice), поэтому мною была добавлена возможность создания Excel-файлы на основе данных из StringGrid. Использовал следующий код (взял из DelphiWorld, переделал для корректной работы в Lazarus - добавил учёт типа данных - строковый тип, целое или дробное число)
версий (от Excel 97 до Excel 2013), но при открытии данного файла в OpenOffice Calc или LibreOffice Calc русский текст отображается в виде иероглифов, причём возможность задать нужную кодировку в настройках программы отсутствует. Первым делом я подумал, что может быть всё дело в том, что при создании файла используется перекодировка из UTF8 в системную (то есть WINDOWS-1251).
скопировал в неё код из Delphi World и запустил. При открытии созданного файла в LibreOffice по прежнему отображаются иероглифы. При этом неделю назад, когда мне понадобилось загрузиться с LiveCD, запустил имеющийся в нём Softmaker Office (очередной бесплатный клон MS Office) и открыл в программе PlanMaker получившуюся таблицу, она открылась вполне корректно, точно также, как и в Microsoft Excel. В чём может быть дело. Неужели не существует способа создания корректных Excel-файлов без использования технологии OLE и "велосипедов" вроде экспорта StringGrid в csv-файл или Html-страницу ? При этом использование сторонних модулей не подходит, потому что большинство из них платные, что не устраивает заказчика, а бесплатные либо с ограничениями вроде максимального числа строк (10-15) либо не работают в Lazarus. Также пробовал искать в интернете имеющийся код, пытаясь найти подробный разбор с комментариями, но нашел лишь ссылку на первоисточник, откуда этот код пошёл по форумам и блогам и попал в Delphi World (Swiss DELPHI Center и ссылки на западные, бразильские и турецкие форумы, где этот код приводится как есть. Проект на Delphi 5 во вложении.
0
|
17.09.2015, 23:02 | |
Ответы с готовыми решениями:
6
Кодировка при экспорте данных в СSV-файл При экспорте данных из dataGridView в файл выдается System.OutOfMemory.Exception Ошибки при экспорте из StringGrid в Excel StringGrid, как сохранить цвет при экспорте? |
600 / 548 / 210
Регистрация: 24.01.2012
Сообщений: 1,348
|
|
18.09.2015, 08:55 | 2 |
CyrillicTools в помощь. А вообще ссылки на другие форумы здесь публиковать запрещено.
0
|
1 / 1 / 1
Регистрация: 15.05.2014
Сообщений: 30
|
|
18.09.2015, 15:10 [ТС] | 3 |
Это было сделано с целью, чтобы не было вопросов типа "что такое Delphi World ?".
Впрочем спасибо за совет. Конечно было бы неплохо найти хороший, годный, и самое главное бесплатный компонент экспорта в Excel для Lazarus, но видимо не судьба. Пробовал недавно экспериментировать с компонентом fpspreadsheet, но я так и не смог заставить его корректно работать - программа падает при записи данных в файл (неважно цифры, буквы, даже элементарный Hello, World), но при этом корректно создаёт пустые файлы.
0
|
600 / 548 / 210
Регистрация: 24.01.2012
Сообщений: 1,348
|
||||||
18.09.2015, 15:54 | 4 | |||||
Только, что скачал fpspreadsheet версию 1.6 и проверил. На форму поместил TsWorksheetGrid и кнопку. в свойствах TsWorksheetGrid разрешил редактирование, а по нажатию кнопки добавил
0
|
1 / 1 / 1
Регистрация: 15.05.2014
Сообщений: 30
|
||||||
18.09.2015, 17:35 [ТС] | 5 | |||||
А как её устанавливал ? Просто копировал файлы из архива в папку с проектом, или же в самом Lazaruse установил компонент ?
Добавлено через 3 минуты Вот код, который я пробовал вставлять в проект - копия из официального руководства + мои дополнения (шрифт times new roman, выделение жирным, размер шрифта).
Добавлено через 3 минуты А почему не StringGrid ?
0
|
600 / 548 / 210
Регистрация: 24.01.2012
Сообщений: 1,348
|
|
18.09.2015, 21:53 | 6 |
Сообщение было отмечено Uncle_Sam как решение
Решение
У меня этот код работает. Осталось сравнить версии lazarus и fpspreadsheet.
На одном компе у меня lazarus 1.4 fpspreadsheet 1.6 установлен. На другом lazarus 1.2.6. fpspreadsheet не устанавливал, а просто скопировал файлы в папку с проектом. И в одном и в другом случае xls файл создался без проблем.
0
|
1 / 1 / 1
Регистрация: 15.05.2014
Сообщений: 30
|
|
21.09.2015, 15:23 [ТС] | 7 |
Вобщем всё получилось, файл корректно создаётся и читается в Office 2003, 2007 и OpenOffice/LibreOffice.
Единственный недостаток это то, что при открытии документа в LibreOffice Calc в некоторых ячейках некорректно выставляется высота (когда включен автоперенос длинного текста) из-за чего отображается только последняя часть текста. Тему можно закрывать.
0
|
21.09.2015, 15:23 | |
21.09.2015, 15:23 | |
Помогаю со студенческими работами здесь
7
При сохранении данных таблицы StringGrid в Excel появляется ошибка Границы таблицы при экспорте в word Форматирование поля таблицы при экспорте в dBASEIV Ошибка при экспорте таблицы DataGridView в Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |