Имя: Пароль:
1C
 
Программно созданный документ Excel открывается с ошибкой
0 Vvvvv
 
03.12.14
10:20
Программно создаю Excel, приду фрагмент

Попытка
    Книга = ExelПриложение.WorkBooks.Open(ИмяКаталогаИмпорта + "\prcislink.xls");
Исключение  
    Книга = ExelПриложение.Workbooks.Add();
КонецПопытки;
Лист = Книга.WorkSheets(1);
Лист.Name = "Text1";
//....
// Заполняю программно файл
//...

Книга.SaveAs(ИмяКаталогаИмпорта + "\prcislink.xlsx");
ExelПриложение.Quit();

Файл создан, даже открывается, но битый какой то. Может надо какое то свойство дописать?

http://www.image123.net/ku2q9rvtb1t8pic.html
1 Wobland
 
03.12.14
10:25
из всего кода работы с екселем ты решил показать именно эти два куска. нормально
2 Armando
 
03.12.14
10:25
Открываешь xls, сохраняешь xlsx
3 Vvvvv
 
03.12.14
10:27
(2) Я перед тем, как запустить обработку, сначала удаляю старый документ. т.е. он не открывается, а создается.
4 Vvvvv
 
03.12.14
10:28
(1) А остальная часть, это обычное заполнение. Там очень много, что бы показывать.
Я думал, я в этом забыл что то дописать. Например, при сохранении не надо какие нибудь свойства прописать?
5 18_plus
 
03.12.14
10:32
(3) тип при сохранении определяется не расширением, его явно указывать надо.
6 18_plus
 
03.12.14
10:33
7 Vvvvv
 
03.12.14
10:44
(6) читаю и не пойму, к чему это
8 18_plus
 
03.12.14
10:53
(7) вроде всё по-русски
2-й параметр
FileFormat
Тип: System.Object
Одно из значений XlFileFormat, указывающих формат файла для использования при сохранении файла. Для существующего файла используемым по умолчанию форматом является последний заданный для этого файла формат, для нового файла — формат используемой версии Excel.

если ткнуть в XlFileFormat - увидишь допустимые значения.
ну и сразу скажу, что псевдонимов этих 1с не не знает, их нужно заменить циферками, найти значения поможет поиск.
9 AdrianBerk
 
03.12.14
10:56
(8) (7)  а  вот и  циферки кажись http://msdn.microsoft.com/en-us/library/office/ff198017(v=office.15).aspx
10 18_plus
 
03.12.14
10:58
11 Vvvvv
 
03.12.14
11:03
(8),(9),
Нужно выбрать цифру. Но какую, они вроде все для Excel.
И как я понимаю нужно поставить, когда буду записывать файл.

Книга.SaveAs(ИмяКаталогаИмпорта + "\prcislink.xlsx",XXX);
Правильно понял. Можете все таки подсказать, что за цифра должна быть?
12 Vladal
 
03.12.14
11:05

(11) Так прочитай все буквы по ссылке:
43 - Excel9795 - старый формат, но многие программы его откроют без проблем.
56 - Excel8 - это уже из новых

и так далее

13 Vvvvv
 
03.12.14
11:25
(12)

Книга.SaveAs(ИмяКаталогаИмпорта + "\prcislink.xlsx",56);
или

Книга.SaveAs(ИмяКаталогаИмпорта + "\prcislink.xlsx",43);
это не работает, во втором случаи вообще ошибка.
14 ВРедная
 
03.12.14
11:41
Попробуй выполнить только этот код:

Попытка
    Книга = ExelПриложение.WorkBooks.Open(ИмяКаталогаИмпорта + "\prcislink.xls");
Исключение  
    Книга = ExelПриложение.Workbooks.Add();
КонецПопытки;
Лист = Книга.WorkSheets(1);
Лист.Name = "Text1";


Книга.SaveAs(ИмяКаталогаИмпорта + "\prcislink.xlsx");
ExelПриложение.Quit();


Не заполняя.
Если ошибки не будет - значит проблема в коде заполнения.
15 dk
 
03.12.14
11:42
у тебя версия екселя какая?
16 Vvvvv
 
03.12.14
11:44
(14) Эта отдельная часть кода работает.
(15) 2010 года
17 Vvvvv
 
03.12.14
12:17
Нашел в чем ошибка.
Закомментировал все строчки, которые изменяют формат ячейки:

Лист.Cells(СтрокаЛиста, 1).NumberFormat = "@";

Без этих строчек, файл не битый. Но мне нужно менять формат.
т.к. я выгружаю код, например "00000547", что бы он не оказался "547"

Подскажите, чем можно заменить?
18 Wobland
 
03.12.14
12:19
(17) а есть что-то похожее на (6), но про нумберформат?
19 Vvvvv
 
03.12.14
12:25
(18) в интернете, про изменение формата, все время нахожу строку, подобную:
Лист.Cells(СтрокаЛиста, 1).NumberFormat = "@";
20 dk
 
03.12.14
12:31
странно что нумберформат падает
можно обойти
...Value = "'" + "000547"
21 Vvvvv
 
03.12.14
12:47
(20) нет, так тоже не получается
Лист.Cells(СтрокаЛиста,15).Value= " "+001010+" ";

в итоге записывается как: 1 010, формат ячейки "общий"
22 DS
 
03.12.14
14:16
Запись макросов пора бы для себя уже открыть.
23 Vvvvv
 
03.12.14
15:04
(22) Как это сделать в 1с?
Можешь подсказать
24 DS
 
03.12.14
15:21
(23) Сделать в екселе запись в макрос необходимых действий. Посмотреть на содержание записанного макроса. Написать код в 1с.
25 Vvvvv
 
03.12.14
17:45
(24) Весь день искал, ничего не нашел. Никогда такого не делал. Можешь дать образец.
26 Ndochp
 
03.12.14
18:03
(21)
не
Лист.Cells(СтрокаЛиста,15).Value= " "+001010+" ";
а
Лист.Cells(СтрокаЛиста,15).Value= " "+"001010"+" ";
27 Ndochp
 
03.12.14
18:10
Кстати, если длина одинаковая, то можно в 2010

NumberFormat = "0000000"

ставить.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой