Создание xls-файла без участия Excel-а

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Создание xls-файла без участия Excel-а

Сообщение Alex404 » 03.06.2004 (Чт) 12:59

Нашел я тут прелюбопытнейший класс для создания xls-файлов без участия Excel и всяких там доп. dll.
Кому интересно http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=11898&lngWId=1
Проблема одна - в созданном xls кириллица нечитаемая если открывать Excel 9 (MSO 2000), и читаемая если Еxcel 10 (MSO XP).
Собствнно о подобной проблемке известно уже из комментариев на указанной выше URL.
Там даже предложение есть, как заставить читаться китайские шрифты (конвертация строки в модуле класса из unicode в основную кодировку операционки):
Код: Выделить всё
StrConv(st$, vbFromUnicode)

Понятно, что для ковертации в кирилицу принципиально ничего не меняется
Я даже на всякий случай ее (кодировку) явно прописывал:
Код: Выделить всё
StrConv(st$, vbFromUnicode, 1049)

Все равно не помогает...
Может кто чего подскажет? Уж больно привлекательная штучка - генерировать сходу xls без всяких там SHELL , Excel.Application и т.п.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.06.2004 (Чт) 18:38

Вот сообщение в отзывах к тому же классу:

1/24/2003 6:28:46 AM:

Russian support chars solved
!!
tjn.web@mail.ee
Моду создают модоки, а распространяют модозвоны.

Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Сообщение Alex404 » 04.06.2004 (Пт) 8:11

Да неживой уже наверное этот tjn.web@mail.ee! :cry:

Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Сообщение Alex404 » 15.06.2004 (Вт) 8:09

Да неживой уже наверное этот tjn.web@mail.ee!

А вот и живой оказался :D Живее всех живых! Еще и ответик прислал! Хороший человек!!!
Так вот! В начале в модуле класса прописываем свойство RussianSupport
Код: Выделить всё
Private Type PRINT_RUSSIAN_SUPPORT
  opcode As Integer
  Length As Integer
  Param1 As Byte
  Param2 As Byte
End Type

Public Property Let RussianSupport(ByVal newvalue As Boolean)

On Error GoTo Write_Error
If newvalue = False Then Exit Property
    Dim RUSSIAN_SUPPORT As PRINT_RUSSIAN_SUPPORT
   
    With RUSSIAN_SUPPORT
      .opcode = 66 'int (&H42)
      .Length = 2 'int
      .Param1 = 1 'byte
      .Param2 = 128 'byte
    End With
    Put #FileNumber, , RUSSIAN_SUPPORT

Exit Property

Write_Error:
Exit Property

Затем уже в теле процедуры создающей файл :
Код: Выделить всё
With myExcelFile
            .RussianSupport = True
....
....
...
End with

Проверил. Работает


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList