Тут была тема про Excel, но там чутос не то. :)

У меня есть двумерный массив- матрица. И мне надо распечатать его в Excel'e. То есть чтоб созадлся документ excel'а с таблицей- матрицей в нём.
Можно ли это осуществить и как?


Заранее спасибо!

Innuendo
Можно записать матрицу в текстовый файл, разделяя значения табуляцией. Такой файл excel откроет как таблицу.
Для записи в файл удобно использовать библиотеку Io.js.
Пример использования:

Выделить код

Код:

var data='...';
...
var fileOut=FileIO.open('С:\\test.txt);
FileIO.write(fileOut, data,'','windows-1251');

Само собой для записи в файл нужны привилегии.

P.S. Если это web-страница, то файл генерировать надо на сервере.

можно так файлы создавать?
то есть просто .txt файл, разделенный проблеами и ентерами?
ну я знаю есть .csv файлы, которые разделяются точкой с запятой.. и их читает excel.


А где можно прочитать про привелегии, я не очень хорошо с ними знаком.
То есть надо будет спросить разрешение у пользователя?

Innuendo

можно так файлы создавать?то есть просто .txt файл, разделенный проблеами табуляцией и ентерами?

Да, excel всё это распихает по ячейкам. Можно проверить на практике.

А где и как создается матрица? JavaScript'ом на web-странице? Или на сервере?

программа чисто клиентская... яваскриптом на клиенте.

Да. Проверил! работает. (ну про txt в excel)
А в них потмо можно будет делать кнопки, и использовать вообще VBA?:)

и расскажите плз по-подробнее, как файл создать... ну что-там надо в привелегиях прописать)


Заранее спасибо!

Да. Проверил! работает. (ну про txt в excel)А в них потмо можно будет делать кнопки, и использовать вообще VBA?:)

Не знаю. Надо попробовать. :)

Про привилегии - ими скрипт будет обладать по умолчанию, если написать расширение и вызывать его оттуда. Если же расширение не писать, то придется задать их через

Выделить код

Код:

netscape.security.PrivilegeManager.enablePrivilege("...");

Но какие конкретно привилегии задавать для записи в файл не помню.

Я вот еще подумал, можно и без файла обойтись:

Выделить код

Код:

var data='1\t2\t3\n1\t2\t3' ;
	document.location.href='data:application/vnd.ms-excel,'+escape(data);

INFOMAN
А проверить? Вбить в строку адреса

Выделить код

Код:

data:application/vnd.ms-excel,1%092%093%0A1%092%093

и посмотреть результат? :)

А. Ну да. Оно не ссылку передает, а сохраняет во временный файл и потом его открывает.
Но при этом вылазит окно Открытие файла.

Лень было вбивать.

Да, окно открытия конечно напрягает, но это пожалуй лучше, чем окно, запрашивающее привилегии на запись файла. Тем более можно поставить галку "Выполнять для всех таких файлов автоматически".

ок... тогда придётся писать расширение... а где про это почитать моно? на xul.ru?

Innuendo
А способ с data: не подошел?
P.S. Ссылки на документацию по написанию расширений есть в этой теме.

Yan
работает, спасибо. Тока вот он какие-то имена ему даёт... Можно ли имена этим файлам задавать?
мелкий оффтоп:
что делает escape()?

Innuendo
Escape переводит

1\t2\t3\n1\t2\t3

в

1%092%093%0A1%092%093

.
Имена задать не удастся..

Если писать расширение, то можно будет сохранить файл под нужным именем в нужной папке, и потом запустить файл на исполнение.

Yan
спасибо :)

я там почитал инфу по расиширениям.. по идее надо хоть как-то знать XML, что я не знаю :)
Ну вот щас книгу купил... буду читать, мне работу сдать надо через полтора месяца, желательно сохранение в Excel'е включиьт в неё)