Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Копирование таблицы из Excel в браузер (https://javascript.ru/forum/dom-window/67945-kopirovanie-tablicy-iz-excel-v-brauzer.html)

CraftLawrence 16.03.2017 16:57

Копирование таблицы из Excel в браузер
 
Добрый день.
Идет разработка веб-сайта, в админке которого оператору нужно очень много работать с переносом данных с екселя в БД сайта. Хочу сделать так, чтобы в екселе выделялась таблица с ячейки n по ячейку m (двухмерная), ctrl+c, затем в браузере выделялось место, ctrl+v.
Это реально? Если да, то куда копать? Нагуглить не выходит.

Кратко: можно ли производить разбор буффера обмена, в котором находится таблица из excel?

p.s. Нет, импорт файла не вариант, данные не стандартизированы, рваны.

Dilettante_Pro 16.03.2017 19:13

CraftLawrence,
Копипасте фрагмент из excel и Разобрать
<textarea rows="10" cols="100" id="text"></textarea>
 <button onclick= "parceArea()">Разобрать</button>
 <script>
       function parceArea() {
           var content = text.value;
           var arr = content.split('\n');
           for(var i = 0; i<arr.length;i++) {
               arr[i] = arr[i].split('\t');
           }
           alert(JSON.stringify(arr));
       }
 </script>

CraftLawrence 16.03.2017 20:30

Цитата:

Сообщение от Dilettante_Pro (Сообщение 447593)
CraftLawrence,
Копипасте фрагмент из excel и Разобрать
<textarea rows="10" cols="100" id="text"></textarea>
 <button onclick= "parceArea()">Разобрать</button>
 <script>
       function parceArea() {
           var content = text.value;
           var arr = content.split('\n');
           for(var i = 0; i<arr.length;i++) {
               arr[i] = arr[i].split('\t');
           }
           alert(JSON.stringify(arr));
       }
 </script>

Ухты, я примерно так же сейчас сижу колупаю! Но есть проблема. В некоторых ячейках много строк, и в итоге ех внутренность при копировании выглядит так:
Код:

"Ряд1
Ряд 2
Ряд 3
Ряд 4"

и соответственно сплит по "\n" создает лишние "ячейки". Не могу перебороть.

Сейчас идея состоит в том, чтобы до сплитования заменить все переносы строки в кавычках на "<newline>", а после разбивки сделать обратно, но не могу сварганить регулярное выражение.

Помогите пожалуйста собрать регулярку! Чтобы из
Код:

"Ряд1
Ряд 2
Ряд 3
Ряд 4"

делало
Код:

"Ряд1<newline>Ряд 2<newline>Ряд 3<newline>Ряд 4"

CraftLawrence 16.03.2017 21:41

Решение было дано в другой теме.

Цитата:

Сообщение от рони (Сообщение 447608)
CraftLawrence,
<textarea id="test" rows="7" cols="70">Ряд 1
Ряд 2
"Ряд 3
Ряд 4
Ряд 5
Ряд 6"
Ряд 7
Ряд 8</textarea>
<script>
      test.value = test.value.replace(/("[^"]+")/gim, function(a) {
   return a.split(/\n\r?/).join('<newline>')
});
  </script>



Часовой пояс GMT +3, время: 14:44.