Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / неправильная запись даты / 13 сообщений из 13, страница 1 из 1
04.04.2013, 11:04
    #38212408
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
Win(7,XP),VFP9,Excel2003
ячейка Excel имеет формат дата тип *14.03.2001
введено значение 13.03.2013
команда в VFP
SET DATE TO GERMAN
.SAVEAS("xxxxxx.csv",6)
просматриваешь файл записано 3/13/2013
Почему, и как найти по какому формату происходит запись в файл csv?
...
Рейтинг: 0 / 0
04.04.2013, 11:54
    #38212514
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
SET DATE TO GERMAN это команда фоксу выводить дату в формате ДД/ММ/ГГГГ
.SAVEAS("xxxxxx.csv",6) выполняет эксель и он понятия не имеет чего там в фоксе.
Надо формат как-то сообщать экселю.

Поэксперементируй в экселе, попробуй добиться чтобы он сохранил как тебе надо.
Как вариант, попробовать сменить формат внутри экселя, сделать формат ячейки "текстовый". Или еще что-то в этом направлении.

С другой стороны если он всегда сохраняет в ММ/ДД/ГГГГ то просто учитывай это при чтении, делай SET DATE TO AMERICAN перед чтением этого файла.
...
Рейтинг: 0 / 0
04.04.2013, 12:12
    #38212573
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
меняешь в экселе формат на текстовый, пишет какое то число..., dtoc(cells()), даёт нормальную дату, но я не знаю, как найти конец записей в эксель, чтоб пройтись по всем ячейкам и сменить формат и значение... , когда в командном окне даёшь комаду
.cells(1,1).Value="1/2/3" , то
?.cells(1,1).Value &&показывает 2.01.03
Можно наверное сравнивать эти значения и преобразовывать формат по этому шаблону...
...
Рейтинг: 0 / 0
04.04.2013, 15:47
    #38213106
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
q1w1e1,

Я суть не понял... Ты пытаешься экспортировать данные из Excel-файла в текст, с помошью VFP и автоматизации?
...
Рейтинг: 0 / 0
04.04.2013, 17:57
    #38213405
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
Присылают ото всюду файлы в формате Excel(разных версий), из всех вариантов экспорта из Excel в различные типы файла, мне этот(CSV) показался более приемлимым, но дату экспортирует когда правильно, когда не правильно, не стал разбираться, просто тупо из VFP в каждой ячейке, поменял формат на текстовый (Column().numberformat тоже не проходит....)
...
Рейтинг: 0 / 0
04.04.2013, 18:10
    #38213436
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
q1w1e1 но я не знаю, как найти конец записей в эксель, чтоб пройтись по всем ячейкам и сменить формат и значение... Это поможет? 8287702
...
Рейтинг: 0 / 0
04.04.2013, 18:17
    #38213454
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
Использовать для экспорта DTOS()?

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

Но самое неясное - ты Фоксом изменяешь файл Excel, подключившись к объекту-приложению, и сохраняешь (экспортируешь) тоже методами самого Excel? Фокс здесь зачем?
...
Рейтинг: 0 / 0
04.04.2013, 18:30
    #38213479
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
Jonny540q1w1e1 но я не знаю, как найти конец записей в эксель, чтоб пройтись по всем ячейкам и сменить формат и значение... Это поможет? 8287702 Здесь это не поможет.
А поможет что-то типа этого:
Код: sql
1.
2.
3.
xlCellTypeLastCell = 11
?.UsedRange.SpecialCells(xlCellTypeLastCell).Row
?.UsedRange.SpecialCells(xlCellTypeLastCell).Column
...
Рейтинг: 0 / 0
05.04.2013, 05:11
    #38213822
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
AndreTMНо самое неясное - ты Фоксом изменяешь файл Excel, подключившись к объекту-приложению, и сохраняешь (экспортируешь) тоже методами самого Excel? Фокс здесь зачем?

Ну я пришел к этому формату в результате проб и ошибок.... :-) Перебор ячеек экселя из фокса. когда заполнено за 50000 ячеек, очень долгий процесс(по крайне мере на моей машине), Impot из экселя(или APPEND FROM), тоже не не совсем удачный вариант(по моему мнению), т.к. нет единого формата(не понятно в какой версии делаи файл экселя), поэтому минимум команд открыл, записал как CSV, и далее в фоксе APPEND FROM TYPE CSV, мне показалось так удобней....:-)


PS: Я тоже использовал UsedRange для определения области заполнения...:-)
...
Рейтинг: 0 / 0
05.04.2013, 09:38
    #38213911
MelnikA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
2q1w1e1
Приветствую !

Я в последнее время вынимаю данные из XLS файлов с помощью ОДБЦ .
nconnect=SQLCONNECT('Excel Files;Dbq='+cfilexls) ...


Удобно и достаточно быстро получается .
...
Рейтинг: 0 / 0
05.04.2013, 10:42
    #38213996
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
q1w1e1Ну я пришел к этому формату в результате проб и ошибок.... :-) Перебор ячеек экселя из фокса. когда заполнено за 50000 ячеек, очень долгий процесс(по крайне мере на моей машине), Impot из экселя(или APPEND FROM), тоже не не совсем удачный вариант(по моему мнению), т.к. нет единого формата(не понятно в какой версии делаи файл экселя), поэтому минимум команд открыл, записал как CSV, и далее в фоксе APPEND FROM TYPE CSV, мне показалось так удобней....:-)
Применительно к FoxPro можно использовать экспорт/импорт через массив. Единственное ограничение - это ограничение на количество ячеек массива в FoxPro. Для версий младше VFP9 не должно быть больше 65 тысяч ячеек и все данные не должны занимать более 2ГБ. Также следует учитывать тот факт, что через массивы нельзя передать содержимое мемо-полей.

Код: sql
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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
* Массив для экспорта должен иметь область видимости Private
* поскольку передается в процедуру parserArray
Dimension testArray(2,5)

testArray[1,1] = 1
testArray[1,2] = 'Один'
testArray[1,3] = 1.01
testArray[1,4] = Date()
testArray[1,5] = .f.

testArray[2,1] = 2
testArray[2,2] = 'Два'
testArray[2,3] = 2.02
testArray[2,4] = Date() + 10
testArray[2,5] = .t.

oExcel = CREATEOBJECT("Excel.Application")  
oBook = oExcel.workbooks.add  
oExcel.visible = .T.  

* Для исследования вопроса о том, как будет происходить экспорт/импорт
* в случае если в Excel есть объединенные ячейки
*!*	oBook.Sheets(1).Range("C1:D1").merge()
*!*	oBook.Sheets(1).Range("C2:D2").merge()

*!*	oBook.Sheets(1).Range("A1:A2").merge()

********************************
* Запись массива в Excel
* Только через процедуру и никак иначе (!)
********************************
oBook.Sheets(1).Range("A1:E2").value = parserArray("testArray")


********************************
* Чтение из Excel в Массив
* Область видимости массива с полученными данными может быть любой
* размерность массива будет автоматически изменена после чтения из Excel
********************************
Local laArray(1)	

laArray = oBook.Sheets(1).Range("A1:E2").value 
* Смотрим, что прочитали
For lnI = 1 to Alen(laArray, 1)
	?'строка '+ Transform(m.lnI) + ': '
	For lnJ = 1 to Alen(laArray,2)
		??' '
		??laArray[m.lnI,m.lnJ]
	EndFor
EndFor



********************************
* Обязательно должна быть оформлена отдельная процедура
* Для "распарсивания" массива при экспорте в Excel
PROCEDURE parserArray
LPARAMETERS taarrayname  
RETURN @&taarrayname
...
Рейтинг: 0 / 0
05.04.2013, 10:51
    #38214020
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
ВладимирМДля версий младше VFP9 не должно быть больше 65 тысяч ячеек
Для VFP9 ничего не поменялось.
HELP Special Terms for Configuration Files mvcount Sets the maximum number of variables that Visual FoxPro can maintain. This value can range from 128 to 65,000.
Default: 16,384
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.08.2020, 13:41
    #39991417
deleteant
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неправильная запись даты
ВладимирМ
Применительно к FoxPro можно использовать экспорт/импорт через массив. Единственное ограничение - это ограничение на количество ячеек массива в FoxPro. Для версий младше VFP9 не должно быть больше 65 тысяч ячеек и все данные не должны занимать более 2ГБ. Также следует учитывать тот факт, что через массивы нельзя передать содержимое мемо-полей.
.
.
.

Пытаюсь таким способом экспортировать в Excel таблицу. Если нет полей типа Date все отлично, если есть -- ругается и не экспортирует. Пишет Unknown COM status code. Пробовал предварительно форматировать соответствующие колонки Excel'я как Дата, не помогло. Как быть?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / неправильная запись даты / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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