Имя: Пароль:
1C
 
Как открыть Excel файл с заданием формата столбцов
0 Oftan_Idy
 
20.07.07
10:36
Есть такая проблема. Нужно из 1С открыть .txt файл(с разделителями табуляции) с помощью excel (затем обрабатывается екселем).
В некоторых столбцах числа храняться с разделем не запятая, а точка. И при открытии файла:
Excel= Новый COMОбъект("Excel.Application");
WB=Excel.WorkBooks.Open(ПутьКФайлуTXT);

ексель преобразовывает число в дату.
Как открыть файл так, чтобы задать параметр - чтобы все ячейки воспринимались как текстовые?
1 bask
 
20.07.07
10:48
(0) зачем открывать текстовый файл в экселе? чтобы эксель создал поля по разделителю? Если да, то тогда можешь открыть его с помощью Microsoft.Jet.OLEDB.4.0

Соединение = новый COMОбъект( "ADODB.Connection" );
   
Соединение.Provider = "Microsoft.Jet.OLEDB.4.0";
Соединение.ConnectionString = "Data Source =" +
   ПутьКФайлу +
   ";Extended Properties=Excel 8.0;";
Соединение.Open();
2 Oftan_Idy
 
20.07.07
10:51
Нет, нужно открыть именно екселем. Ексель создает поля по разделителю, все хорошо. только вот как задать параметр, чтобы в текстовом формате поля были?
3 bask
 
20.07.07
10:58
сорри, ошибся
строка подключения должна быть такой

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + strPathtoTextFile + "; Extended Properties=""text;HDR=Yes"""
4 bask
 
20.07.07
11:00
(2) просто таким образом, ты запросом обращаешься к текстовому файлу, и эксель как механизм для создания колонок не нужен.
5 bask
 
20.07.07
11:02
6 Oftan_Idy
 
20.07.07
11:02
В том то и дело что ексель нужен не только для того, чтобы колонки сделать. Далее идет обработка файла средствами ексель.
А просто файл текстовый открыть можно и штатными средствами 1С
7 Armando
 
20.07.07
11:26
Как вариант:
WB.Columns(НомерКолонки).NumberFormat = @;
8 Oftan_Idy
 
20.07.07
11:38
(7) Было бы идеально, но когда файл уже открыт, то ексель уже испортил формат поля.
Например в текст.файле поле 5.57
Открываем - в поле уже "май.57", меняем формат "20941"
9 Oftan_Idy
 
20.07.07
11:40
Нашел, что можно сделать так:
WB=Excel.WorkBooks.OpenText(Файл,1251,1,1,1,0,1,0,0,0,0);
List = Excel.WorkBooks(1).Worksheets(1);

Но чтобы был нужный формат колонки, нужно передать еще один параметр Array, а вот как его сделать в 1С?
В VB он передается так (,,, Array(13, 2))
10 Oftan_Idy
 
20.07.07
11:53
Да, осталось разобраться как из 1С передать методу OpenText параметр Array(13,2)
Подсажите pls!
11 Valery
 
20.07.07
12:29
А зачем из 1С. Попробуй сразу из Экселя Exel.Array(13,2).
12 Oftan_Idy
 
20.07.07
12:35
Такой метод не существует.

Попробовал вот так:
МассивФормат1 = Новый COMSafeArray("VT_I4", 2);
МассивФормат1.SetValue(0, 13);
МассивФормат1.SetValue(1, 2);
МассивФормат2 = Новый COMSafeArray("VT_I4", 2);
МассивФормат2.SetValue(0, 12);
МассивФормат2.SetValue(1, 2);
       
МассивФормат = Новый COMSafeArray("VT_VARIANT", 2);
МассивФормат.SetValue(0, МассивФормат1);
МассивФормат.SetValue(1, МассивФормат2);
                                       
WB=Excel.WorkBooks.OpenText(ФайлИзСписка,1251,1,1,1,0,1,0,0,0,0,МассивФормат);
List = Excel.WorkBooks(1).Worksheets(1);

Все равно не работает
13 Kalambur
 
20.07.07
13:58
А что если сначала указать свойства листа а потом уже открывать?
14 Oftan_Idy
 
20.07.07
14:08
Это как? Что-то не пойму...
Я делаю Excel.WorkBooks.OpenText(..) и в после этой операции портиться формат в новом созданном листе.
Где нужно задать формат? Если можно кусок кода Pls
Ошибка? Это не ошибка, это системная функция.