PShim

Импорт данных в html форму

Recommended Posts

Добрый день!
Есть небольшой вопрос связанный с импортом данных в html форму. Постановка задачи такова: есть html форма которая в дальнейшем отправляется на печать, в определенные пункты этой форму нужно импортировать данные из внешнего файла (excel например). Каким образом можно производить передачу данных? Как сделать это по тегово? Какие есть бесплатные библиотеки по js для формирования отчетов?

Share this post


Link to post
Share on other sites

если html форма имеет формат (и ни как не связана с php)

<form>
...
<input name="col1">
<input name="col2">
....
</form>

а xls выглядит на вроде
 col1 | col2  
text1 | text2
то можно через js запрашивать с сервера информацию xls файла разбирать данные и вставлять из колонки 'col1' в value input c name="col1" 'text1'.
для работы c xls в php можно использовать библиотеку PHPExcel, о ее работе можно почитать здесь https://habr.com/ru/post/245233/

если есть возможность, то я бы посоветовал перенести формирование формы в php и сразу в этот момент можно было бы заполнять ее данными из xls

Share this post


Link to post
Share on other sites

А пример когда для локального excel с помощью обращения к нему на js можете скинуть?

Edited by PShim

Share this post


Link to post
Share on other sites

если вы файл берете не с сервера, то лучше импортировать в другом формате, например csv или xml
дальше выбрав его через <input type="file"> получить доступ к его содержимому в этом вам поможет
https://developer.mozilla.org/ru/docs/Web/API/FileReader
и заполнять форму данными

Share this post


Link to post
Share on other sites

Простите, не могу понять все равно как. Без примера не разберусь.

html:
<td><input type="file" id="input"></td>

js:

var fileInput = document.querySelector('input[type="file"]');

function read(callback) {

var file = fileInput.files.item(0);

var reader = new FileReader();

reader.onload = function() {

callback(reader.result);

}

reader.readAsText(file);

}

 

Все же прошу помочь как с написанием кода/примером

По факту у меня имеется таблица в html в нее нужно внести определенные данные из csv файла.

Edited by PShim

Share this post


Link to post
Share on other sites

Еще раз здравствуйте. Я все же не могу разобраться с js. Если можете помогите кодом. Есть csv файл, имеющий в себе конструкцию  id| num   и имеется html таблица в которую нужно вывести значения id, num

                                                            21| 45

в определенные секции этой таблицы. Как нужно правильно обратиться к элементам файла csv и вывести в определенные пункты таблицы в html. Помогите кодом!

Edited by PShim

Share this post


Link to post
Share on other sites

а как можно не правильно обратиться к строкам csv?
какая связь должна быть у "определенных" пунктов в таблице с данными в csv чтобы однозначно понять что именно эти данные должны быть вставлены в конкретную ячейку?

Share this post


Link to post
Share on other sites

Правильно это когда не знаешь синтаксиса в js. Связь данных csv и таблицы html чисто прикладная. Я понимаю как можно с помощью генератора и работы с json на python сделать подобную работу. Но никак не могу вникнуть, как можно сделать это все на js. Поэтому ищу помощь на этом форуме. 
Связь между данными можно определить как в словаре. {kye:value} и прописать в ручную для каждого значения сначала в js все значения присвоив им переменные, которые в дальнейшем можно вывести в html таблицу в требуемые места по заданию

Share this post


Link to post
Share on other sites

связь то какая?
вот есть у вас csv

Цитата

1;1
2;2
3;3

есть таблица

<table>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
</table>

как определить куда вставлять 1, куда 2, куда 3?

Share this post


Link to post
Share on other sites

speed;1
weigth;2
tall;3
age;18

 

Если примерно сделать так, то как будет выглядеть код? Вы уроки по js не даете?

<table>
<tr>1<td></td><td></td></tr>
<tr><td></td><td>2</td></tr>
<tr><td></td><td>18</td>3</tr>
</table>

Share this post


Link to post
Share on other sites

1. первая колонка из csv у вас не вставляется и является ключом
2. туда куда вы вставили 1 и 3 нельзя вставлять данные
предположу, что вам нужно
https://jsfiddle.net/9bzwpmya/

Share this post


Link to post
Share on other sites

так сделано под

Цитата

speed;1
weigth;2
tall;3
age;18

а у вас в файле
speed;weigth;tall;age
1;2;3;18
в вашем случае нужно первую строку использовать для создания ключей массива
а вторую значений

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Valery Subbotin
      Здравствуйте, подскажите, пожалуйста, в чем может быть проблема: при вертске, блоки текста имеют совсем иные переносы нежели на макете.
      Шрифт, насыщенность(font-weight), размер - все как на макете, но что-то, видимо, все равно не так.


    • By Svenden
      Как слово эквилибриум сдвинуть немного вниз ? <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Эквилибриум </title> <link rel="stylesheet" href="/ecomapp/assets/css/style.css"> <meta name="description" content=""/> <meta name="keywords" content=""/> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"> </head> <body> <!-- Navigation --> <nav class="navbar navbar-expand-sm navbar-dark bg-dark fixed-top"> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-8"> <ul class="nav navbar-nav"> {% if not request.get_full_path == '/' %} <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Категории <span class="caret"></span></a> <ul class="dropdown-menu"> {% for category in categories %} <li><a href="{{ category.get_absolute_url }}">{{ category.name }}</a></li> {% endfor %} </ul> </li> {% endif %} </ul> </div> </nav> <!-- Page Content --> <div class="container"> {% block content %} <div class="row"> <div class="col-lg-3"> <p class="lead">Эквилибриум</p> <div class="list-group"> {% for category in categories %} <a href="{{ category.get_absolute_url }}" class="list-group-item">{{ category.name }}</a> {% endfor %} </div> </div> <!-- /.col-lg-3 --> <div class="row"> {% for product in products %} <div class="col-lg-4 col-md-6 mb-4"> <div class="thumbnail"> <img src="{{ product.image.url }}" alt="" style="width:100px; height: 150px;"> <div class="caption"> <h4 class="pull.right">{{ product.price }} руб.</h4> <h5><strong><a href="{{ product.get_absolute_url }}">{{ product.title }}</a></strong></h5> <p>{{ product.description }}</p> </div> </div> </div> {% endfor %} </div> <!-- /.row --> </div> <!-- /.col-lg-9 --> </div> <!-- /.row --> </div> <!-- /.container --> <div class="container"> {% endblock content %} </div> </body> </html> <footer class="py-0 bg-dark"> <div class="container"> <p class="m-145454 text-green">Copyright © Your Website 2019</p> </div> <!-- /.container --> </footer>
    • By Valery Subbotin
      Здравствуйте, подскажите пожалуйста как избавиться от отступов в тексте, чтобы границы блока обтекали текст пиксель в пиксель.
      Все padding-и разумеется убрал, но непонятный зазор между границей блока и текстом все ровно остался.

  • Member Statistics

    46,434
    Total Members
    3,128
    Most Online
    Sterben
    Newest Member
    Sterben
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • Если свойства нет в спецификации, то откуда его возьмет браузер? Даже если в каком то одном из браузеров введут это свойство то смысла его использовать все-равно не будет, так как в остальных оно работать не будет 🙂   Тогда бардак творился, DHTML, разные объектные модели и все дела. У netscape действительно была такая фича. Хотя не факт что она работала. Вот тут https://www.uv.es/jordi/v3/html/dynhtml/dynamic.pdf можно увидеть что float:center; присутствует в коде, но следом написано что элементы можно выровнять с помощью float слева или справа, или с помощью js по центру. Также в книге указаны допустимые значения для float - left, right, none. Так что это скорее всего была запланированная возможность, которая не получила реализации.
    • Если бы с html и css, все браузеры строго соответствовали спецификациям) Да статье около десятка лет, а то и более. Вот я тоже склоняюсь к тому, что это ошибка. но эта лекция была написана даже с учётом ещё живого на тот момент netscape navigator. Может быть он позволял интерпретировать такую конструкцию. В описании автор указывает, что так блок становится обтекаемым с двух сторон.
    • Может с clear путаете? Или в статье спутали. Наверно, древняя?
      http://htmlbook.ru/css/clear
  • Popular Contributors