Экспорт массива JavaScript отфильтрованных таблиц HTML в MS Excel или CSV - PullRequest
1 голос
/ 27 июля 2011

Мне снова нужно сделать что-то, что звучит просто, но на самом деле меня разочаровывает факт.

На сайте внутренней сети моей компании у нас есть большая таблица данных, к которой применен фильтр javascript, чтобы менеджеры идругие заинтересованные стороны могут быстро найти соответствующие им строки.Фильтр, который я использую, можно найти по адресу http://tablefilter.free.fr/.

. Моя проблема возникает, когда мне нужна кнопка для экспорта отфильтрованных результатов в Excel, чтобы менеджеры могли получить доступ к данным в автономном режиме.Существует много простых вариантов экспорта таблицы HTML в Excel, но я не смог понять, как получить ПРОСТО фильтрованные результаты для экспорта. (Примечание. Доступ к этому сайту интрасети возможен только через IE).

В составе фильтра таблиц javascript GetFilteredData () есть функция, которая будет захватывать отфильтрованные ячейки данных и вводэто в массив, я думаю, называется FilterData [].Этот массив форматируется так: [rowindex, [value1, value2, value3 ...]].

Так как мне получить этот массив в файл Excel или csv?Опять же, это будет доступно только IE, поэтому объекты и элементы управления ActiveX приемлемы.

Также я должен отметить, что не могу использовать серверные технологии, поэтому, пожалуйста, ограничьте ваши ответы ограничениями HTML, javascript и activeX,Спасибо!

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

К вашему сведению: DataTables имеет хороший плагин TableTools, который может экспортировать таблицу в csv на стороне клиентаЭто достигается с помощью Flash.Если вас устраивает фильтр DataTables, думаю, это было бы хорошим решением.

http://www.datatables.net/extras/tabletools/

0 голосов
/ 27 июля 2011

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

Получив этот массив, вы можете превратить его в строку JSON.Попробуйте эту популярную облегченную библиотеку (json2.js):

https://github.com/douglascrockford/JSON-js

Пример:

text = JSON.stringify(['e', {pluribus: 'unum'}]);
// text is '["e",{"pluribus":"unum"}]'

Вы должны иметь что-то вроде

var dataString = '["rowindex",["value1","value2","value3"]]'

В этот момент вы можете использовать некоторую замену регулярного выражения в строке, чтобы отформатировать ее в любом стиле.

0 голосов
/ 27 июля 2011

Если вы используете IE, начиная с версии 8, вы можете использовать data: URL. Просто сгенерируйте URL и наведите указатель на него, используя location.href. Данные в CSV могут быть сгенерированы с использованием javascript и base64.

...