Как вызвать многопараметрическую функцию Excel-ActiveX - PullRequest
2 голосов
/ 03 марта 2012

Я уже опубликовал вопрос о записи диапазона сразу из массива Javascript в лист Excel через Internet Explorer (с использованием объектов ActiveX), потому что хотя это можно сделать по ячейкам, этот метод по ячейкам недопустим медленно, поэтому диапазон должен быть записан сразу.

К сожалению, хотя этот сайт может быть великолепным, никто не дал мне ответа на мою проблему (вздох!).

Итак, я попробовал кое-что еще: из листа aspx на стороне клиента я записываю свой стек csv (тот, который я отчаянно хочу записать в мгновенно открывающийся файл excel) как файл CSV на локальном клиентском диске. Это работает хорошо, и если я открываю файл CSV через Excel, я могу видеть его сразу и правильно проанализировать. Хорошо ...

Но дело в том, что я хочу, чтобы пользователь сразу же получил этот CSV-файл в окне Excel, как только он щелкнул значок Excel на моей странице APSX, вместо того, чтобы переключаться на проводник своего файла и скучно перемещаться, чтобы выбрать файл CSV сам.

Итак, я намерен использовать метод «Открыть» объекта ActiveX Excel, параметры которого уточняют, что он должен быть подвергнут синтаксическому анализу csv с помощью точки с запятой: Итак, я использую следующие инструкции:

<script type='text/javascript'>
   applic = new ActiveXObject("Excel.Application");
   classeur = applic.Workbooks.Open(nomFichier,"","","4");
</script>

И теперь возникает другая проблема (придется ли мне ненавидеть Microsoft в конце концов?): Кажется, что с Javascript я не могу использовать многопараметрический вызов функций ActiveX, потому что я также пытался с "OpenText" и имел та же проблема:

Инструкция:

classeur = applic.Workbooks.Open(nomFichier)

работает нормально, но как только я добавлю хотя бы второй параметр, например:

classeur = applic.Workbooks.Open(nomFichier,"")

Мой навигатор не работает!

Итак, я возвращаюсь к своей первой проблеме, но все еще не могу сразу проанализировать мой стек csv в диапазоне Excel ...

Так вот мой вопрос: Существует ли специальный синтаксис, который я не знаю, который позволяет передавать несколько параметров из Javascript в функцию Activex?

Надеюсь, на этот раз мне повезет больше со всеми вами, умные ребята ...

Спасибо.

1 Ответ

0 голосов
/ 04 марта 2012

Ну, в конце концов я нашел ответ на мой вопрос о синтаксисе actveX: хотя параметры определены как «Variant» Microsoft, следует отметить 2 вещи: 1) Javascript не допускает пустых параметров, как например:

 classeur = applic.Workbooks.Open(nomFichier,,,4);  // false Javascript syntax 

Это причина, по которой я поместил пустые строки. Но другая проблема исходит от вызова ActiveX: 2) ActiveX не принимает пустую строку вместо параметров Variant, например:

 classeur = applic.Workbooks.Open(nomFichier,"","","4"); // false ActiveX syntax

И на самом деле, когда я попробовал следующий синтаксис, моя функция работала нормально:

classeur = applic.Workbooks.Open(nomFichier,2,false,4);  // accepted syntax

Таким образом, проблема заключалась не в количестве параметров, а в совокупности ограничений javascript и ActiveX.

...