powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение кодировки cpzero не помогает
7 сообщений из 7, страница 1 из 1
Изменение кодировки cpzero не помогает
    #34638534
nrs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nrs
Гость
use weight
? cpdbf()

*866 кодировка
Brow
*ok русский текст читается
* Excel дбф-ка открывается русский текст читается

*делаю запрос с какими либо условиями, для простоты так:
select * from weight.dbf into table temp
? cpdbf()

*1251 кодировка поменялась
Brow
*ok русский текст читается
* Excel дбф-ку не открывает ругается неизвестный формат файла

use temp
copy to temp1.dbf as 866
use temp1
? cpdbf()

*866 кодировка вернулась
Brow
*ok русский текст читается
*Excel дбф-ку не открывает ругается неизвестный формат файла

Возвращаясь к temp.dbf который 1251
do cpzero with "temp.dbf" , 866
use temp
? cpdbf()

*866 кодировка вернулась
Brow
*абракатабра
*Excel дбф-ку не открывает

А мне нужно вывести результат запроса в excel
***
XX.Application.Cells(2,1)="№п/п"
XX.Application.Cells(2,2)="Машина"
XX.Application.Cells(2,3)="Водитель"
XX.Application.Cells(2,4)="Отправитель"
XX.Application.Cells(2,5)="Получатель"
XX.Application.Cells(2,6)="груз"
XX.Application.Cells(2,7)="Дата"
***
XX.Application.Cells(i+1,1)=temp.NADMISSION
XX.Application.Cells(i+1,2)=temp.CAR
XX.Application.Cells(i+1,3)=temp.DRIVER
XX.Application.Cells(i+1,4)=temp.FIRM
XX.Application.Cells(i+1,5)=temp.PLACE
XX.Application.Cells(i+1,6)=temp.GRUZ
XX.Application.Cells(i+1,7)=dtoc(temp.WDATEout)
***
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34638560
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А copy to temp.xls type xl5 не подойдет?
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34638601
nrs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nrs
Гость
copy to temp.xls type xl5
Excel открывает русский текст читается.
Но, ведь это содержимое dbf с заголовками как в dbf.
А я вывожу отчет
Где в заголове название с периодом дат и времени
XX.Application.Cells(1,2)="Отчет по грузу за период ";
+dtoc(tdatain)+" по "+dtoc(tdataout)+" г."+ttimein+"-"+ttimeout
И плюс названия полей
XX.Application.Cells(2,1)="№п/п"
XX.Application.Cells(2,2)="Машина"
XX.Application.Cells(2,3)="Водитель"
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34638622
nrs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nrs
Гость
Более того еще и макрос стартует
**Запуск макроса
XX.Application.Run("my")
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34638641
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тебе cтроку вставить мешает? Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
	copy to (recv.cTopPath) type xl5
	oEx = newobject("Excel.Application")
	with oEx
		.Visible= 1 
		.Workbooks.Open(recv.cTopPath)
		.cells( 1 , 1 ).value = 'Наименование'
		.cells( 1 , 2 ).value = 'Остаток'
		.cells( 1 , 3 ).value = 'Заказ'
		.range(.cells( 1 , 1 ), .cells( 1 , 3 )).font.bold = .t.
	    .cells( 1 , 1 ).Columns.ColumnWidth =  50 
	    .Rows("1:1").Insert(- 4121 ) && Добавление заголовка
	    with .cells( 1 , 1 )
	    	.value = alltrim(iif(empty(recv.cKioskAdr), recv.adress, recv.cKioskAdr))
	    	.font.size = .font.size +  2 
	    	.font.bold = .t.
	 	endwith
		.ActiveWorkbook.Save()
	endwith

Но если отчет сложный, то я предпочитаю делать текстовый файл с разделителями, потом его открывать экселем и добавлять форматирование, формулы и т.п.
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34638997
nrs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nrs
Гость
ок, спасибо.
Тогда будет еще вопрос, уже не по кодировке.
У меня готовый файл xsl и в нем макрос.
Теперь как его программно создать и записать в excel. Получается чушь. Переформулирую: переделать макрос в код foxpro VPF5.0a
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Sub my()
*итоги по грузу сумма нетто ,итог по отправителю сумма нетто
Cells.Select
    
    Selection.Subtotal GroupBy:= 4 , Function:=xlSum, TotalList:=Array( 11 ), _
        Replace:=False, PageBreaks:=False, SummaryBelowData:=True
    Selection.Subtotal GroupBy:= 6 , Function:=xlSum, TotalList:=Array( 11 ), _
        Replace:=False, PageBreaks:=False, SummaryBelowData:=True

*рисуем ч/з условное форматирование горизонтальные линии
*не хороший вариант нарисовать горизонтальные линии, чтоб лучше читалось
Columns("A:K").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ОСТАТ(СТРОКА(A2);2)=0"
    Selection.FormatConditions( 1 ).Borders(xlLeft).LineStyle = xlNone
    Selection.FormatConditions( 1 ).Borders(xlRight).LineStyle = xlNone
    With Selection.FormatConditions( 1 ).Borders(xlTop)
        .LineStyle = xlDash
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.FormatConditions( 1 ).Borders(xlBottom)
        .LineStyle = xlDash
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.FormatConditions( 1 ).Interior.ColorIndex =  2 
        
 *защита листа(только без пароля)
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
...
Рейтинг: 0 / 0
Изменение кодировки cpzero не помогает
    #34639413
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По вопросу о DBF.

Кроме кодовой страницы существует еще такая вещь, как версия файла DBF.

Excel напрямую (файл/открыть) открывает только файлы DBF созданные в версии FP2.x Для старших версий FoxPro требуется открывать такие таблицы уже с использованием ODBC. Из Excel - это пункт меню Данные/Импорт внешних данных. О чем Excel честно и сообщает.

Чтобы "трансформировать" таблицу в младшую версию используют синтаксис

Код: plaintext
copy to temp1.dbf as  866  TYPE FOX2X

По поводу макроса

Перевод макроса Excel в синтаксис FoxPro
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение кодировки cpzero не помогает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]