<MyRusakov.ru />

Программирование на Python с Нуля до Гуру

Программирование на Python с Нуля до Гуру

Данный курс научит Вас программировать на языке Python, который крайне желательно знать любому, кто хоть иногда имеет дело с компьютерами. Курс состоит из 6 разделов, в которых Вы с нуля освоите этот язык и сможете создавать самые разные программы для самых разных задач любой сложности.

К курсу прилагается множество упражнений и все исходники из уроков.

Наконец, Вы получите ещё несколько бонусов: "Создание калькулятора на Python", "Создание игры на Python" и "Правильная работа со справочником".

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Конвертирование данных из HTML таблицы в CSV на JavaScript

Конвертирование данных из HTML таблицы в CSV на JavaScript

Данный скрипт позволяет конвертировать данные из HTML таблицы в CSV в браузере.

HTML страница

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML 2 csv</title>
    <script type="text/javascript" src="jquery-1.7.1.js" ></script>
    <script type="text/javascript" src="html2csv.js" ></script>
</head>
<body>
    <table id="table2csv" border="1"  style="background-color:#FFFFCC" width="0%" cellpadding="3" cellspacing="3">
        <tr>
            <th>Товар</th>
            <th>Артикул</th>
            <th>Цена</th>
            <th>Производитель</th>
            <th>В наличии</th>
        </tr>
        
        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>
        
        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        <tr>
            <td>Камера наружняя</td>
            <td>23421-15</td>
            <td>2500 руб</td>
            <td>Producer 1</td>
            <td>Да</td>
        </tr>

        
    </table>

    <input 
        value="Экспорт в CSV" 
        type="button" 
        onclick="$('#table2csv').table2CSV({header:['Товар','Артикул','Цена','Производитель','В наличии']})">
</body>
</html>

JavaScript код

jQuery.fn.table2CSV = function(options) {
    var options = jQuery.extend({
        separator: ';',
        header: [],
        delivery: 'popup' // popup, value
    },
    options);

    var csvData = [];
    var headerArr = [];
    var el = this;

    // количество элементво заголовка таблицы
    var numCols = options.header.length;
    var tmpRow = []; // массив заголовков таблицы

    if (numCols > 0) {
        for (var i = 0; i < numCols; i++) {
            tmpRow[tmpRow.length] = formatData(options.header[i]);
        }
    } else {
        $(el).filter(':visible').find('th').each(function() {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html());
        });
    }
    
    // печатаем заголовок в csv
    row2CSV(tmpRow);

    // проходимся по ячейкам таблицы
    $(el).find('tr').each(function() {
        var tmpRow = [];
        $(this).filter(':visible').find('td').each(function() {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html());
        });
        
        // ячейки таблицы в csv
        row2CSV(tmpRow);
    });
    
    
    if (options.delivery == 'popup') {
        var mydata = csvData.join('\n');
        return popup(mydata);
    } else {
        var mydata = csvData.join('\n');
        return mydata;
    }

    
    function row2CSV(tmpRow) {
        var tmp = tmpRow.join('') // удаляем пустые строки
        
        if (tmpRow.length > 0 && tmp != '') {
            var mystr = tmpRow.join(options.separator);
            csvData[csvData.length] = mystr;
        }
    }
    
    
    function formatData(input) {
        // заменяем " на “
        var regexp = new RegExp(/["]/g);
        var output = input.replace(regexp, "“");
        //HTML
        var regexp = new RegExp(/\<[^\<]+\>/g);
        var output = output.replace(regexp, "");
        if (output == "") return '';
        return '"' + output + '"';
    }
    

    function downloadFile(data="", fileName="test.txt", type="text/plain;charset=UTF-8") {
           
        // создаем невидимый элемент ссылки
        const a = document.createElement("a");
        a.style.display = "none";
        document.body.appendChild(a);
       

        // в качестве данных для загрузки из ссылки устанавливаем данные из формы
        a.href = window.URL.createObjectURL(
            new Blob([data], { type })
        );
       
        // аттрибут download ссылки используется для загрузки файла
        a.setAttribute("download", fileName);

        // запускаем загрузку путем эмулирования нажатия клавиши
        a.click();

        // удаляем ссылку из DOM
        document.body.removeChild(a);
    }


    function popup(data) {
        alert(data)
        downloadFile(data,'data.csv','text/csv');
        return true;
    }
};

При нажатии на ссылку браузер загружает файл в виде CSV не обращаясь к серверу.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.