1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
1

Перенос данных из ячеек html таблицы в таблицу Excel

14.05.2019, 20:45. Показов 5316. Ответов 17

Author24 — интернет-сервис помощи студентам
есть таблица из которой мне надо взять данные ячеек и перенести их в заполненный Excel. данные выводить не хочет либо ошибку выдает либо при запросе через console.log выводит в любом id Null при этом выводит сам весь тег с id(прикрепил скриншот).

вот полный html файл
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{% load static %}
<!DOCTYPE html>
<html>
<head>
 
<link rel='stylesheet' href='{% static "css/bootstrap.css" %}'>
<link rel='stylesheet' href='{% static "css/menu.css" %}'>
 
</head>
 
      <h1 style="text-align: center;">Калькулятор стандарта СКС</h1>
 
  <table class=" table-bordered" id="myTable">
    <tr>
      <th class="table-dark"></th>
      <th class="table-dark">Эконом</th>
      <th class="table-dark">Оптима</th>
      <th class="table-dark">Премиум</th>
      <th class="table-dark">Лофт</th>
    </tr>
 
    <tr >
      <td class="table-dark">количество рабочих мест</td>
      <th class="bg-success"><div id="d1" contenteditable ></div></th>
      <th class="bg-success"><div id="d2" contenteditable ></div></th>
      <th class="bg-success"><div id="d3" contenteditable ></div></th>
      <th class="bg-success"><div id="d4" contenteditable ></div></th>
    </tr>
    <tr>
      <td class="table-dark">средняя длина кабеля</td>
      <td class="bg-success" colspan="4"><div id='a' contenteditable ></div></td>
    </tr>
    <tr>
      <td class="table-dark">длина кабель канала/лотка(магистраль)</td>
      <th class="table-dark"></th>
      <th class="bg-success"><div id='b2' contenteditable ></div></th>
      <th class="bg-success"><div id='b3' contenteditable ></div></th>
      <th class="bg-success"><div id='b4' contenteditable ></div></th>
    </tr>
    <tr>
      <td class="table-dark">% кабинетов где необходим горизантальный кабельканал</td>
      <th class="table-dark"></th>
      <th class="bg-success"><div id="c2" contenteditable ></div></th>
      <th class="table-dark"></th>
      <th class="table-dark"></th>
    </tr>
  </table>
<h1></h1>
 
  <div class="" style="text-align: center;">
  <a href="#" class="btn btn-success" id="test"> Вывод в Excel</a>
</div>
<script type="text/javascript" src="{% static 'js/jquery-1.11.3.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery-migrate-1.4.1.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/log.js' %}"></script>
<script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
вот js файл
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function() {
    $('#test').click(function (event) {
      event.preventDefault();
      var url = window.location.pathname
      a = document.getElementById('d1');
      console.log(a);
      console.log(a.getAttribute('value'));
      $.post("/table/", {'url':url}, function (response) {
          var resp = eval("("+response+")");
          if (!resp.success){
              return false;
          } else {
              alert("SUCCESS!!");
          }
      });
    });
});
вот файл views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
#другие формы
from bs4 import BeautifulSoup
import xlrd, xlwt
from django.views import View
from xlutils.copy import copy as xlcopy
from django.views.decorators.csrf import csrf_exempt
#другой код
@csrf_exempt
def table(request):
    if request.POST:
        return HttpResponse('{"success":true}')
    return render(request,'table.html', {})
#другой код
Миниатюры
Перенос данных из ячеек html таблицы в таблицу Excel  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2019, 20:45
Ответы с готовыми решениями:

Перенос данных из ячеек таблицы Excel в соответствующие ячейки шаблона Word
Здравствуйте !Передо мной на производственной практике поставили задачу:есть заполненная таблица...

Перенос данных из 31 таблицы Excel в одну таблицу
Доброго времени суток! Прошу помощи, как сам не знаю как справится с этой проблемой. Каждый...

Перенос данных из Excel или таблицы Word в DataGridView простым копированием ячеек
Нигде не могу найти, как организовать перенос данных из Excel или таблицы Word в DataGridView...

Перенос данных из 31 таблицы Excel в одну таблицу part 2
Ранее был задан такой вопрос: Прошу помощи, как сам не знаю как справится с этой проблемой. ...

17
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
15.05.2019, 07:52  [ТС] 2
немного подредактировал файл views.py. но так же ни чего не работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@csrf_exempt
def table(request):
 
    if request.POST:
        return HttpResponse('{"success":true}')
        source_filename = "/templates/xl.xls"
        destination_filename = "/templates/example_new.xls"
 
        read_book = xlrd.open_workbook(source_filename, on_demand=True)  # Открываем исходный документ
        read_sheet = read_book.get_sheet(0)  # Читаем из первого листа
        write_book = xlcopy(read_book)  # Копируем таблицу в память, в неё мы ниже будем записывать
        write_sheet = write_book.get_sheet(0)  # Будем записывать в первый лист
        write_sheet.write(0, 0, read_sheet.cell_value(0, 0) + 42)  # Прибавим к значению из ячейки "A1" число 42
        write_book.save(destination_filename)  # Сохраняем таблицу
    return render(request,'table.html', {})
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
15.05.2019, 08:00 3
Цитата Сообщение от Lastik228 Посмотреть сообщение
немного подредактировал файл views.py
Я не знаю как в Python, но разве после 5 строки return HttpResponse('{"success":true}') код будет исполнятся дальше (6 - 14 строки)?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
15.05.2019, 08:12  [ТС] 4
Цитата Сообщение от j2FunOnly Посмотреть сообщение
return HttpResponse('{"success":true}')
я ее убрал так же прописал id из которых надо вытаскивать данные и он затупил
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function() {
    $('#test').click(function (event) {
      event.preventDefault();
      var url = window.location.pathname
      a = document.getElementById('d1');
      console.log(a);
      console.log(a.getAttribute('value'));
      $.post("/table/", {'d1':d1,'d2':d2,'d3':d3,'d4':d4,'a':a,'b2':b2,'b3':b3,'b4':b4,'c2':c2}, function (response) {
          var resp = eval("("+response+")");
          if (!resp.success){
              return false;
          } else {
              alert("SUCCESS!!");
          }
      });
    });
});
так же почему то в console.log(a); он выводит мой div с числом а в console.log(a.getAttribute('value')); Null
Javascript
1
2
    console.log(a);
      console.log(a.getAttribute('value'));
можете подсказать почему так?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
15.05.2019, 08:13  [ТС] 5
j2FunOnly,
так же после одтупливания выдал мне ошибки
Миниатюры
Перенос данных из ячеек html таблицы в таблицу Excel  
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
15.05.2019, 08:25 6
Цитата Сообщение от Lastik228 Посмотреть сообщение
я ее убрал ... и он затупил
Кто затупил, что приходит от сервера в таком случае тогда?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
15.05.2019, 08:33  [ТС] 7
Цитата Сообщение от j2FunOnly Посмотреть сообщение
Кто затупил
при нажатии на кнопку "Вывод в Excel " начинает думать а за тем выдает мне ошибку

jquery-3.4.1.min.js:2 Uncaught RangeError: Maximum call stack size exceeded
at HTMLTableRowElement.toString (<anonymous>)
at w (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
15.05.2019, 09:51  [ТС] 8
j2FunOnly,так же подскажите пожалуйста почему
Javascript
1
2
3
  var a = document.getElementById('d1');
      console.log(a);
      console.log(a.getAttribute('value'));
выводит Null
Изображения
 
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
15.05.2019, 10:00 9
Цитата Сообщение от Lastik228 Посмотреть сообщение
почему выводит Null
Потому что нет такого атрибута
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<div id="d1" contenteditable></div>
<script>
  d1.focus();
  d1.oninput = function() {
    console.clear();
    console.log('value property', this.value);
    console.log('value attribute', this.getAttribute('value'));
    console.log('HTML', this.innerHTML);
    console.log('textContent', this.textContent);
  }
 
</script>
https://jsfiddle.net/j2FunOnly/mxuvcz53/
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
16.05.2019, 08:32  [ТС] 10
j2FunOnly, а по поводу почему он не берет данные из ячеек и не кидает их в excel не можете подсказать?

Добавлено через 39 минут
Цитата Сообщение от j2FunOnly Посмотреть сообщение
такого атрибута
у меня есть такой атрибуд. он не хочет его видеть

Добавлено через 4 минуты
Цитата Сообщение от j2FunOnly Посмотреть сообщение
нет такого атрибута
соединил js и html коды в один файл и все равно не видит
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{% load static %}
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href='{% static "css/bootstrap.css" %}'>
<link rel='stylesheet' href='{% static "css/menu.css" %}'>
</head>
      <h1 style="text-align: center;">Калькулятор стандарта СКС</h1>
  <table class=" table-bordered" id="myTable">
    <tr>
      <th class="table-dark"></th>
      <th class="table-dark">Эконом</th>
      <th class="table-dark">Оптима</th>
      <th class="table-dark">Премиум</th>
      <th class="table-dark">Лофт</th>
    </tr>
 
    <tr >
      <td class="table-dark">количество рабочих мест</td>
      <th class="bg-success"><div id="d1" contenteditable ></div></th>
      <th class="bg-success"><div id="d2" contenteditable ></div></th>
      <th class="bg-success"><div id="d3" contenteditable ></div></th>
      <th class="bg-success"><div id="d4" contenteditable ></div></th>
    </tr>
    <tr>
      <td class="table-dark">средняя длина кабеля</td>
      <td class="bg-success" colspan="4"><div id='a' contenteditable ></div></td>
    </tr>
    <tr>
      <td class="table-dark">длина кабель канала/лотка(магистраль)</td>
      <th class="table-dark"></th>
      <th class="bg-success"><div id='b2' contenteditable ></div></th>
      <th class="bg-success"><div id='b3' contenteditable ></div></th>
      <th class="bg-success"><div id='b4' contenteditable ></div></th>
    </tr>
    <tr>
      <td class="table-dark">% кабинетов где необходим горизантальный кабельканал</td>
      <th class="table-dark"></th>
      <th class="bg-success"><div id="c2" contenteditable ></div></th>
      <th class="table-dark"></th>
      <th class="table-dark"></th>
    </tr>
  </table>
<h1></h1>
 
  <div class="" style="text-align: center;">
  <a href="#" class="btn btn-success" id="test"> Вывод в Excel</a>
</div>
<script type="text/javascript" src="{% static 'js/jquery-3.4.1.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery-migrate-1.4.1.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
<script type="text/javascript">
  $(document).ready(function() {
    $('#test').click(function (event) {
      event.preventDefault();
      var url = window.location.pathname
      var a = document.getElementById('d1');
      console.log(a);
      console.log(a.getAttribute('value'));
      $.post("/table/", {'url':url}, function (response) {
          var resp = eval("("+response+")");
          if (!resp.success){
              return false;
          } else {
              alert("SUCCESS!!");
          }
      });
    });
});
 
</script>
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
16.05.2019, 10:00 11
Цитата Сообщение от Lastik228 Посмотреть сообщение
у меня есть такой атрибуд
У HTML элемента DIV нет такого атрибута. Я же скинул вам пример, почему вы не хотите слышать что вам говорят? Используйте свойство innerHTML или textContent
Перенос данных из ячеек html таблицы в таблицу Excel
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
16.05.2019, 10:22  [ТС] 12
Цитата Сообщение от j2FunOnly Посмотреть сообщение
DIV нет такого атрибута
огромное спасибо что разжевали я все понял

Добавлено через 8 минут
j2FunOnly, сможете помочь еще по одному вопросу?
мне надо вывести данные из ячеек в готовый xlsx файл в нужные мне в нем ячейки при нажатии на кнопку и затем этот файл открыть.
пробую так но не получается
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready(function() {
    $('#test').click(function (event) {
      event.preventDefault();
      var url = window.location.pathname
      $.post("/table/", {'d1':d1}, function (response) {
          var resp = eval("("+response+")");
          if (!resp.success){
              return false;
          } else {
              alert("SUCCESS!!");
          }
      });
    });
});
вот файл views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
@csrf_exempt
def table(request):
    if request.POST:
        source_filename = "xl.xls"
        destination_filename = "/templates/example_new.xls"
        read_book = xlrd.open_workbook(source_filename, on_demand=True)  # Открываем исходный документ
        read_sheet = read_book.get_sheet(0)  # Читаем из первого листа
        write_book = xlcopy(read_book)  # Копируем таблицу в память, в неё мы ниже будем записывать
        write_sheet = write_book.get_sheet(0)  # Будем записывать в первый лист
        write_sheet.write(0, 0, read_sheet.cell_value(0, 0) + 42)  # Прибавим к значению из ячейки "A1" число 42
        write_book.save(destination_filename)  # Сохраняем таблицу
    return render(request,'table.html', {})
но при нажатии на кнопку выдает ошибку в console браузера
Uncaught RangeError: Maximum call stack size exceeded
at HTMLCollection.toString (<anonymous>)
at w (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
at qt (jquery-3.4.1.min.js:2)
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
16.05.2019, 10:28 13
Цитата Сообщение от Lastik228 Посмотреть сообщение
Javascript
1
$.post("/table/", {'d1':d1}, function (response) {
d1 - эт что? Если вы нигде не определяете, то браузер попытается найти элемент с таким ID в теле документа (не факт :P), а jQuery пытается этот элемент сериализовать для отправки и видимо тут что-то ломается, указывайте явно что вы хотите отправить
Javascript
1
2
// var d1 = document.getElementById('d1');
$.post("/table/", { 'd1': d1.textContent }, function (response) { /* ... */ }
1
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
16.05.2019, 10:41  [ТС] 14
Цитата Сообщение от j2FunOnly Посмотреть сообщение
d1 - эт что?
окей я примерно понял но как сказать что id=d1 надо засунуть в ячейку B4 в Excel. и так же он выдает ошибку(на скриншоте )
Миниатюры
Перенос данных из ячеек html таблицы в таблицу Excel  
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
16.05.2019, 11:02 15
а это уже у вас сервер сломался на этом запросе
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
16.05.2019, 11:11  [ТС] 16
j2FunOnly, Окей а как сказать чтобы id=b1 попал в таблицу в ячейку B4
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
16.05.2019, 11:23 17
Лучший ответ Сообщение было отмечено Lastik228 как решение

Решение

КМК вам к питонистам (джанго? xlrd / xlwt / xlutils?) с вопросом "как из браузера поймать данные, отправленные с помощью аякс, и записать в xlsx файл?".
1
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
21.05.2019, 10:46  [ТС] 18
Цитата Сообщение от j2FunOnly Посмотреть сообщение
textContent
привет. я хотел узнать при передаче через textContent у меня цифра превращается в текст. в Excel выводит число но он говорит что это текс. мне же нужно что бы я передавал именно число а не текст. как это можно сделать?
0
21.05.2019, 10:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2019, 10:46
Помогаю со студенческими работами здесь

Перенос таблицы из базы данных Mysql в таблицу на главную страницу сайта html
Здравствуйте, возникла проблема переноса данных из Mysql в таблицу на сайте html. Имеется...

Построчный перенос данных из ячеек Excel в закладки Word
Добрый день, уважаемые форумчане! :) Помогите, пожалуйста, не смогла найти решения поставленной...

Перенос данных из таблицы в таблицу
Уважаемые Гуру помогите пожалуйста реализовать функцию переноса данных из одной таблицы в другую....

Перенос данных из таблицы в таблицу
например: у меня имеется таблица1(Список) и таблица2(Отчет о выдачи) мне нужно сделать так чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru