![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Здравтсв, порыл, порыл - инфы не нашел.
Нужно сделать следующее(из названия темы видно что именно). Есть в excel табличка с данными, мы копируем эту табличку и все данные так же ровненько вставляются в ExtJs табличку. Кто-то делал такое? На данный момент нашел только один инструмент который это делает корректно - SocialCalc. http://plugindetector.com/socialcalc Смастерил я из примеров ExtJs табличку, что дальше? Как парсить буфер? Насколько я знаю такое(ровненькое вставление данных из excel) по умолчанию в ExtJs не предусмотрено... Вопрос в том, что я не знаю как это реализовать, может если кто натолкнет на правильный путь? В общем много как, как, как... Спасибо за советы, а если у кого завалялось решение сией задачки, буду премного благодарен! Это сообщение отредактировал(а) Killer_13 - 15.8.2012, 15:25 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 38 Всего: 386 |
Делал.
Вставка таблицы из Excel делается в окно wysiwyg редактора. Использовался nicedit, так как он позволяет свободно встраивать себя в элементы управления и все равно использовался в админке. Принципиальной разницы редакторов в этом смысле - нет. Можно вставлять результат копирования в textarea, тогда столбцы будут отделятся табами, а строки - переводами строк с потерей форматирования. Но простое решение не выдержало приемки заказчиком ;) Специально было сделано окошко по форме выглядящее как окно ввода. Сразу после вставки принятый HTML парсится на предмет наличия там тегов table, tr, td и прочих атрибутов таблицы. По colspan и rowspan определяются все склеенные строки-столбики. Ничего принципиально сложного нет. Это сообщение отредактировал(а) ksnk - 15.8.2012, 15:36 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
- это звучит оч обнадежывающе...
![]() - надеюсь, только если придется все это делать. то думаю разница все-таки будет. Тоисть с вашых слов, надеюсь правильно понял, нужно в extJs-табличку парсить содержимое буфера, отслеживать табы(значит новая ячейка), потом notepad++ показывает мне переход на другую строку "CRLF" и пошло поехало в цикле...? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 38 Всего: 386 |
Нет. я заодно описал и неудачную попытку с использованием простого textarea. Если использовать wysiwyg, то в результате copy-paste вставляется полноценная HTML таблица из которой достаточно выкинуть лишнюю офисную разметку. В моем случае достаточно было сохранить только внутреннюю структуру таблиц (склеенные ячейки) и их содержимое. Так что атрибуты строк и столбцов не рассматривались вообще. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Ясн, ну полюбому нужно будет найти как ExtJs буфер курит...
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 3 Всего: 260 |
по-моему, ExtJS тебе не поможет
смотри, в буфере обмена одни и те же данные хранятся в миллионе разных форматов. касательно таблицы из Экселя, это будет: а) текст с разделением табуляцеий/переводом строк б) HTML с <table>/<tr>/<td> в) бинарные данные, понятные экселю же с большим количеством специфической информации Может, и очевидно. Пойдем дальше: тип данных определяет программа-получатель. Т.е. браузер. Это браузер считает, что в IFrame с contentEditable(WYSIWYG-редакторы) безпроблемно можно вставить HTML. а в textarea — только текст без форматирования. Я очень-преочень сильно удивлюсь, если узнаю, что на это можно влиять из джаваскрипт кода. потому предложение: вставлять все ж в какой-то аналог WYSIWYG, а уже после вставки — парсить и переносить |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Потому что вариант Буфер-WYSIWYG-ExtJsGrid мне точно не подойдет. Если можно Буфер-Манипуляции с WYSIWYG на программном уровне-ExtJsGrid Имеется ввиду, что нужно будет как-то влезть между буфером и вставкой в ExtJsGrid, чтоб сделать все необходимые манипуляции... Такое возможно? Пасиб. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 3 Всего: 260 |
||||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 38 Всего: 386 |
В Excel пользователь отмечает таблицу и нажимает Сtrl-С
переходит в окно админки, находит окно "вставки таблицы", кликает правой кнопкой мышки и выбирает "вставить". Чудесным образом после этих телодвижений в нужном месте появляется вставленная таблица. Чудо происходит так: На событии mouseover области редактирования ставится обработчик события mousemove. По выходу мышки из области - обработчик снимается. Обработчик проверяет, что содержимое области редактирования стало не пустым. В этом случае содержимое анализируется на наличие таблицы. После анализа содержимое очищается. Всякие onpaste и onchange показали слабую применимость, тем более, что избранный визивиг использовал ифреймы для комфортной совместимости с IE6. Этот вариант (с правой кнопкой мышки) довольно успешно срабатывал на всех доступных мне вариантах броузеров. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Killer_13 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
- не совсем понял это чудо.. Добавлено через 3 минуты и 13 секунд Тут мне посоветовали вот такой вариант
|
||||
|
|||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 38 Всего: 386 |
Мое "чудесное" описание занимается только пунктом 1 - Получаем данные из clipboard'а. Все остальные пункты считаются мной тривиальными ![]() Можно совместно с mousemove иметь еще и обработчик onkeydown с той-же функцией обработки. Или, вероятнее всего, правильнее будет вызывать обработчик с небольшой задержкой после события keydown... Дело в том, что редактор ставит довольно странный набор элементов вместо того, в который "внедряется". Добраться до нужного и вписать этому нужному правильные обработчики событий не очень просто. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
- пасиб, о этом подумаю уже попозже. Сейчас первым делом нужно, хоть по какому-то собитию прочитать буфер. А потом уже и этим заниматься. Сейчас нужно еще правильный grid na Ext замутить... |
|||
|
||||
ExSoft |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 29.6.2008 Репутация: 1 Всего: 1 |
BTW,
|
||||||
|
|||||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
ExSoft - firebug показывает что так то вроде не много кода, но для меня как новичка в этом всем нужно будет долго курить.
Ну ничего помаленьку. Здесь вроде все и логично, но иногда не знаешь что и куда вешать, как склеивать. Пасиб. |
|||
|
||||
Killer_13 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Вот что получилось
Не подскажете, почему не выделяются несколько ячеек одновременно, так сказать группа ячеек? В документации пишет, что за это отвечает свойство
Можно ли создать сетку например 100х100 и не забивать данными? И с возможностью редактирования этих полей, а то когда нет данных в ячейке ничего ни вставить нельзя и так д... Воно то и логично, потому что за это отвечает Store. Я не ошибусь если предположу такое видение....? Нужно вешать на ячейки какой-то обработчик, потом при двойном клике если ячейка пестая, то как-то все таки открывать ее и по ее закритии писать данные в Store. |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |