Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закорючки в Excel [D7, WinXP]


guest ©   (2010-05-11 18:48:00) 

День добрый!
Использую экспорт в Excel, описанный здесь:
http://www.delphiturkiye.com/offline/2/10771.html
а именно в формат BIFF. Результирующий файл XLS в разных версиях Excel показывается по разному - русские буквы показывает нормально, либо закорючками. Замечено, что на одной машине с Office 2007 было нормально, но после очередного обновления Office русские буквы стали не видны. Прошу помощи! Спасибо.


guest   (2010-05-12 10:44:00) [1]

Спасибо, все получилось!

 WriteRecordHeader(BOF_BIFF5, 6);
 fStream.Write(Buffer, 6);
 WriteRecordHeader($0042, 2); // Заголовок кодовой страницы
 Buffer[0] := $04E3; // Кодовая страница 1251 = Windows CP-1251 (Cyrillic)
 fStream.Write(Buffer, 2);


guest   (2010-05-12 10:07:00) [2]

Утро доброе!
Спасибо большре, появилась надежда, что не надо будет переделывать на другой способ экспорта. А вот по этим функциям можно поподробней?

{$IFDEF QR_USE_CURRENT_ACP}
Buffer[0] := GetACP; // Current active code page
{$ELSE}
Buffer[0] := gExcelExportCodePage;


Игорь Шевченко   (2010-05-11 19:39:00) [3]

Мы в свое время QuickReport патчили для устранения проблем с русским шрифтом, а именно явно указывали в biff-файле кодовую страницу

 WriteRecordHeader(BOF_BIFF5, 6);
 Stream.Write(Buffer, 6);
//SE: 09.06.2009 To enable correct display of cyrillic text in excel file,
//           encoding must be specified.
{$IFDEF QR_USE_CURRENT_ACP}
 Buffer[0] := GetACP; // Current active code page
{$ELSE}
 Buffer[0] := gExcelExportCodePage;
{$ENDIF}
 Buffer[1] := 0;
 Buffer[2] := 0;
 Buffer[3] := 0;
 Buffer[4] := 0;
 WriteRecordHeader($0042, 2);
 Stream.Write(Buffer, 2);  
//SE: 09.06.2009 end of changes


Наверх

Титульная страница Поиск, карта сайта Написать письмо