1

Тема: JScript: Сформировать строку для буфера обмена (для excel)

Бодрый день всем.

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

var strCopy = "Столбец 1\tСтолбец2\r\nДанные";
objIE = new ActiveXObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentWindow.clipboardData.setData("text", strCopy)
objIE.Quit()

После запуска кода, текст благополучно вставляется в excel и получается вот что
http://rghost.ru/36890106/image.png

Важна для меня лишь 1 строчка скрипта и вопрос вот в чем. Как сформировать строку так, что бы в excel вставилось так:
http://rghost.ru/36890116/image.png

При копировании из IE таблиц, ячейки ведь вставляются объединенными.

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: JScript: Сформировать строку для буфера обмена (для excel)

Хм, ну как Вы правильно заметили:

DnsIs пишет:

При копировании из IE таблиц, ячейки ведь вставляются объединенными.

Соответственно для того, чтобы Excel понял, как правильно обработать Ваши данные надо передать что то вроде этого...


var strCopy = "<table><tr><td>Столбец 1<\/td><td>Столбец 2<\/td></tr><td colspan=2>Данные<\/td><\/table>";
objIE = new ActiveXObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentWindow.clipboardData.setData("Text", strCopy)
objIE.Quit()

Иначе как Excel узнает, какие ячейки группировать, а какие нет ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: JScript: Сформировать строку для буфера обмена (для excel)

Xameleon, вопрос и ответ можно, слегка причесав, в Коллекцию.

4 (изменено: DnsIs, 2012-03-07 18:59:10)

Re: JScript: Сформировать строку для буфера обмена (для excel)

По пути домой мысль такая назрела, что нужно сформировать html-таблицу и все будет тип-топ.
А сразу так не попробовал, потому как сбило с толку копирование в буфер таблиц Firefox-ом. Он то как раз такие теги не копирует, а копирует просто тупо текст и в эксель вставляется одной строкой.

Спасибо.

Нас невозможно сбить с пути, нам пофигу куда идти.

5

Re: JScript: Сформировать строку для буфера обмена (для excel)

Он то как раз такие теги не копирует, а копирует просто тупо текст

Вы не правы:

1    CF_TEXT    Memory    156    6    
13    CF_UNICODETEXT    Memory    312    5    
49442    HTML Format    Memory    1,085    2    
49744    text/html    Memory    1,754    1    
49941    text/_moz_htmlcontext    Memory    280    3    
49942    text/_moz_htmlinfo    Memory    8    4    
49943    text/x-moz-url-priv    Memory    60    7

IE:

1    CF_TEXT    Memory    137    1    
13    CF_UNICODETEXT    Memory    274    2    
49344    Rich Text Format    Memory    5,397    4    
49442    HTML Format    Memory    27,202    3

6

Re: JScript: Сформировать строку для буфера обмена (для excel)

to alexii:

alexii пишет:

Xameleon, вопрос и ответ можно, слегка причесав, в Коллекцию.

Хм. Как то слабовато для коллекции, Вы не находите ? )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

7

Re: JScript: Сформировать строку для буфера обмена (для excel)

Мне кажется важным изложить возможность «ручного» формирования форматированного содержимого и вставки его в тот же Excel.

8

Re: JScript: Сформировать строку для буфера обмена (для excel)

alexii пишет:

Он то как раз такие теги не копирует, а копирует просто тупо текст

Вы не правы ...

Отчего же тогда в эксель вставляется одной строкой?

Нас невозможно сбить с пути, нам пофигу куда идти.

9

Re: JScript: Сформировать строку для буфера обмена (для excel)

DnsIs, я не смотрел подробно, но очень может быть, что то, что попадает в буфер обмена из Firefox, больше соответствует стандартам HTML и меньше — тому, что ожидает увидеть там Excel. По сравнению с IE, разумеется.

10

Re: JScript: Сформировать строку для буфера обмена (для excel)

Ну да ладно, фиг с ним. Главное что задача решена, спасибо всем за подсказку.

Нас невозможно сбить с пути, нам пофигу куда идти.