|
|
|
Как открыть 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
|
+(4) http://msdn2.microsoft.com/en-us/library/ms974559.aspx "Much ADO About Text Files"
|
|||
|
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 |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |