MuityPlace *xls

Статус
Закрыто для дальнейших ответов.

Любимцев

Топикстартер
15 лет на форуме
Сообщения
4 826
Реакции
2 163
Вот столкнулся с проблемой, и обнаружил, что нет ни каких средств для помещения нескольких листов из экселя в ИД
Что, на мой взгляд странно...

Это, типа заказ на скрипт ))
 
Ответ: MuityPlace *xls

А что, если просто напечатать все эти листы в виртуальный принтер (с опцией "вся книга"), затем Акробат Дистиллером сделать из него многостраничный PDF.
И победить старым добрым скриптом ImportMultipagePDF.
 
Ответ: MuityPlace *xls

Ну так, наверное, хочется в ID заняться форматированием и т.д. и т.п. Потому пдф - не вариант.
 
Ответ: MuityPlace *xls

Можно попробовать так:

Код:
f = File.openDialog('Выберите файл Excel');if (!f) exit();
d = app.documents.add();
sheetIndex = app.excelImportPreferences.sheetIndex;


try {
    for (var i = 0; i < 99; ++i){
        app.excelImportPreferences.sheetIndex = i;
        d.pages.item(-1).place(f, undefined, undefined, false);
        d.pages.add();
    }
} catch(e) {}
app.excelImportPreferences.sheetIndex = sheetIndex;
alert('Импортировано листов: ' + i);
 
Ответ: MuityPlace *xls

Отлично! Только ИД надолго задумывается... возможно — большой помещаемый файл
Скрипт создал новый док, и поместил в верхний левый, проигнорировав Мастер... я так понимаю, иное невозможно?
 
Ответ: MuityPlace *xls

Скрипт создал новый док, и поместил в верхний левый, проигнорировав Мастер... я так понимаю, иное невозможно?

Отчего же. Все зависит от того, что нужно) Так сделано для наглядности и безопасности. Замените строчку 2 на
Код:
d = app.activeDocument;
и таблицы будут добавляться к текущему документу, начиная с последней страницы.
 
Ответ: MuityPlace *xls

А если убрать привязку к страницам:
Код:
f = File.openDialog('Выберите файл Excel');if (!f) exit();
d = app.activeDocument;
sheetIndex = app.excelImportPreferences.sheetIndex;


try {
    for (var i = 0; i < 99; ++i){
        app.excelImportPreferences.sheetIndex = i;
[B]        d.place(f, undefined, undefined, false);[/B]
        
    }
} catch(e) {}
app.excelImportPreferences.sheetIndex = sheetIndex;
alert('Импортировано листов: ' + i);

то каждую страницу можно будет разместить вручную как захочется:)
 
Ответ: MuityPlace *xls

Ну да, так логичнее (как выяснилось — и быстрее). Документ же не из одних таблиц состоит
Я звиняюсь... Евгений, а нельзя ли сразу и вот это подклеить? )):]
 
Ответ: MuityPlace *xls

Можно только в версии Sho Nuff — если таблицы вставляются "автоматом" на указанные страницы:
Код:
f = File.openDialog('Выберите файл Excel');if (!f) exit();
d = app.activeDocument;
sheetIndex = app.excelImportPreferences.sheetIndex;

[B]var myT = [];[/B]
try {
    for (var i = 0; i < 99; ++i){
        app.excelImportPreferences.sheetIndex = i;
		[B]myT[myT.length] = [/B]d.pages.item(-1).place(f, undefined, undefined, false);
        d.pages.add();
    }
} catch(e) {}
app.excelImportPreferences.sheetIndex = sheetIndex;
alert('Импортировано листов: ' + i);

[B]app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "\\r\\Z";
app.changeGrepPreferences.changeTo = "";
for(i=0;i<myT.length;i++){
	myT[i][0].changeGrep();
	}[/B]

В моем варианте не выйдет — скрипт заканчивает работу до того, как таблицы размещены в документе, а значит и замену делать еще негде, как-то так.
 
Ответ: MuityPlace *xls

мм... не совсем понял, про окончание работы — физически-то она же размещены, просто в переполненный фрейм...
pages.add — сизифов труд, который все равно, ни кто не оценит...
 
Ответ: MuityPlace *xls

а нельзя ли как-то получить после помещения название помещенного листа? в sheetName пусто
 
Ответ: MuityPlace *xls

и еще незадача - CS4 на lion падает при попытке помещения несуществующего листа, соответственно трюк с try{}catch(e){} не прокатывает
 
Статус
Закрыто для дальнейших ответов.