![]() |
![]() |
![]() |
|
как открыть существующий Excel-файл, дописать его и сохранить? | ☑ | ||
---|---|---|---|---|
0
Loko
28.06.06
✎
08:05
|
лазил по форуму поиском. ничего толком не нашел. в основном везде идет открытие уже созданного файла. А мне нужно, если в опред. каталоге этого файла нет, то создать его (если он существует, то открыть его). И имеющийся файл дописать и сохранить.
|
|||
1
edelweiss
28.06.06
✎
08:06
|
СуществуетФайл(<?>)
ExistFile(<?>) Синтаксис: СуществуетФайл(<ИмяФайла>) Назначение: Проверяет существование файла.. Возвращает: 1 - файл существует; 0 - не существует. Параметры: <ИмяФайла> - Строковое выражение с именем файла. Подробнее см. в документации, глава 'Работа с Файлами' |
|||
2
Chum
28.06.06
✎
08:06
|
"работа с файлами" - см. ЖКК файловая система ФС
"работа с Excel" - внимательней ищи. (excel.application) |
|||
3
Loko
28.06.06
✎
08:06
|
да это я знаю
а как создать ехель файл |
|||
4
edelweiss
28.06.06
✎
08:08
|
Excel.WorkBooks.Add();
|
|||
5
Chum
28.06.06
✎
08:08
|
(3) а сохрани пустую таблицу
|
|||
6
edelweiss
28.06.06
✎
08:09
|
(5)иногда лучше молчать
|
|||
7
Loko
28.06.06
✎
08:14
|
//грубо опишу код
СчСтрок = 1; Если ФС.СуществуетФайл("defect.xls")=1 Тогда ТаблExcel.Application.Workbooks.Open(ИмяКаталога+"defect.xls"); КонецЕсли; Book = ТаблExcel.Workbooks.Add(); Ячейка = ТаблExcel.Cells(СчСтрок,1 ); Ячейка.Value="1"; Ячейка = ТаблExcel.Cells(СчСтрок,2 ); Ячейка.Value="2"; Book.SaveAs(ИмяКаталога+"defect.xls"); Book.Close(0); //когда файла нет, то сохраняет файл ОК. и записывает. а когда есть. то нифига |
|||
8
edelweiss
28.06.06
✎
08:17
|
а если сделать так
|
|||
9
Loko
28.06.06
✎
08:21
|
(8)пробовал, тогда она не запишет файл. т.к. для случая когда файл найден, далее будет ругаться на переменнную book.
|
|||
10
Loko
28.06.06
✎
08:22
|
(9) тьфу. не сразу догнал код. счас попробую
|
|||
11
Loko
28.06.06
✎
08:23
|
"Сохранить файл под именем, совпадающим с именем открытого документа, невозможно. Укажите другое имя или закройте другой документ" - в табло.
|
|||
12
edelweiss
28.06.06
✎
08:24
|
а если головой подумать... или с утра не айда... или вам здесь весь код написать?
|
|||
13
Loko
28.06.06
✎
08:25
|
утро? хе. у нас полвторого)) да я с утра бьюсь. литературы нет. уровень в 1С средний.
|
|||
14
edelweiss
28.06.06
✎
08:27
|
на skunk_ dog mail ru отправь свое творение
|
|||
15
AndrewHV
28.06.06
✎
08:28
|
(14) а почему почта не edelweiss? :)
|
|||
16
edelweiss
28.06.06
✎
08:30
|
(15)нах... этот ящик специально для спама... зачем мне другие светить
|
|||
17
smaharbA
28.06.06
✎
08:36
|
ТаблExcel.DisplayAlerts=0
... ТаблExcel.DisplayAlerts=1 |
|||
18
smaharbA
28.06.06
✎
08:37
|
Если ФС.СуществуетФайл("defect.xls")=1 Тогда
Book=ТаблExcel.Application.Workbooks.Open(ИмяКаталога+"defect.xls"); else Book=ТаблExcel.Workbooks.Add(); КонецЕсли; |
|||
19
edelweiss
28.06.06
✎
08:38
|
(18)он наверное сам победил
|
|||
20
а лю 427
28.06.06
✎
08:41
|
+(6) или купить курицу и жевать ее мозги...
|
|||
21
Loko
28.06.06
✎
09:32
|
спасибо Эдельвейсу.
(18)тут правильно. тоже спасибо. |
|||
22
Loko
28.06.06
✎
09:36
|
единственное, что когда файл существует и дописывается, то система спрашивает, что, типа: "файл существует, переписать? Да+Нет+Отмена". В конец обнаглею и спрашу: "ЕСть возможность этот вопрос убрать, чтоб дописывал по умолчанию?
|
|||
23
edelweiss
28.06.06
✎
09:37
|
// Отучим excel задавать глупые вопросы, типа
// "Сохранить изменения". И закроем нашу книгу. Book.Saved = 1; Book.Close(); |
|||
24
FreeFin
28.06.06
✎
09:41
|
(22) Тупо, но спращивать не будет:
//****** CurrentBook=EB.WorkBooks.Add(); Если ФС.СуществуетФайл(КаталогИБ()+"ExtForms\ForTP\"+СокрЛП(ИмяФ)+"xls")=1 Тогда ФС.УдалитьФайл(КаталогИБ()+"ExtForms\ForTP\"+СокрЛП(ИмяФ)+"xls"); КонецЕсли; CurrentBook.SaveAs(КаталогИБ()+"ExtForms\ForTP\"+ИмяФ+".xls"); |
|||
25
edelweiss
28.06.06
✎
09:43
|
(24) см. (20)
|
|||
26
Loko
28.06.06
✎
09:44
|
(23) спасибо, допер
итого: Если ФайлЕстьАНеМожетНеЕсть = 1 тогда Book.Saved = 1; Book.Close(); Иначе Book.SaveAs(ИмяКаталога+"defect.xls"); Book.Close(0); КонецЕсли; |
|||
27
Loko
28.06.06
✎
09:45
|
+(23) переменая ФайлЕсть определяется после "СуществуетФайл"
|
|||
28
FreeFin
28.06.06
✎
09:47
|
(25) Ты дурачок? Тебе код, работающий автоматом в обработке зрузок из Excel файлов выложен, работающий 2 года, промеж прочим... Иди ф топку.
|
|||
29
Loko
28.06.06
✎
09:49
|
(28) зачем мне удалять файл? мне дописывать его надо!
|
|||
30
edelweiss
28.06.06
✎
09:50
|
(28)работающий не значит правильный... а то, что я дурачок... тут все знают... а вам дяденька надо учиться контролировать свои эмоции... особенно когда в вам ваше сало тыкают в мусало
|
|||
31
FreeFin
28.06.06
✎
09:57
|
(29) А потому и писано в (24), что тупо:
Открываем: ФС.АтрибутыФайла(FileName,РазмФ,АтрФ,ВремяФ,ВрПД,ВрПЗ,РасшФ); Если (СокрЛП(АтрФ)="000010000") Тогда CurrentBook=EB.WorkBooks.Open(FileName); Иначе Предупреждение("Файл занят!"); EB.Quit(); КонецЕсли; //Чего-то с ним делаем //Сохраняем во времянку EB.DisplayAlerts=0; CurrentBook.SaveAs(КаталогИБ()+"ExtForms\ForTP\"+ИмяФ+".xls"); //...Закрываем CurrentBook.Close(); EB.DisplayAlerts=1; EB.Quit(); // и заменяем на уровне ФС, измененным - тот что был. Фсьо. |
|||
32
FreeFin
28.06.06
✎
10:03
|
(30) Хочешь собачиться? Тогда пойми - большие мальчики, разбираются к контексте темы, а не занимаются флудеризмом. Давай, попробуй убить интеллектом, тогда честь и хвала тебе, а так=только запах... А эмоции, это то, что и меня и тебя сдесь держит. Было-бы иначе, и пальцам не пошевелил, чтобы это написать.
|
|||
33
edelweiss
28.06.06
✎
10:07
|
(32)ваш вопрос в (28) ставит вас в определеную нишу... тягаться с вами интелектом ... куда нам дурачкам... а уж тем более убивать...
вот прям даже ума не приложу как можно совершить убийство используя в качестве орудия преступления интелект... |
|||
34
FreeFin
28.06.06
✎
10:14
|
(33) Ладна, как младший по-возрасту, ты-ж с 1899? Уважаю и предлагаю: давай не будем? Не красиво это, хотя и жутко веселит. Если чем оскорбил=сорри, ну не люблю я куриные мозги :-).
|
|||
35
Shaman100M
28.06.06
✎
10:31
|
(0) Прямое обращение к эксел и внесение изменений - это тормоза, и если объем большой... Я делал по-другому:
1. Есть файл шаблона эксел *.xlt с необходимой формой отчета / прайсом. 2. Есть текстовый файл с данными 3. В файле-шаблоне прописана связь с текстовым файлом через формулы. Еще нужен макрос, разрывающий эту связь и заменяющий формулы в ячейках на значения. т.образом, В 1с-ке просто создаем текстовый файл с данными, открываем его в экселе и открываем новый файл эксел на основании шаблона xlt. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |