Подтвердить что ты не робот

Вставка данных Excel в таблицу html

Используя Javascript, как мне создать таблицу HTML, которая может "принимать" числовые данные матрицы из Excel (или электронной таблицы Google), "скопировать" в электронную таблицу и затем "вставить" в таблицу в браузере.

4b9b3361

Ответ 1

Это будет надежно работать только с IE, поскольку Firefox (и, вероятно, другие) не разрешает доступ к буфером обмена, не разрешая его; предыдущее предложение вставки в текстовое поле сначала могло бы работать лучше, чем это.

При копировании из электронной таблицы, как правило, ячейки разделяются вкладкой (chr9) и строками с CR (chr13). Этот script преобразует буфер в двумерный массив, а затем создает из него таблицу. Не слишком элегантный, но он, похоже, работает с копированием данных из Excel.

<html>
<head>
<script language="javascript">
function clip() {

    // get the clipboard text

    var clipText = window.clipboardData.getData('Text');

    // split into rows

    clipRows = clipText.split(String.fromCharCode(13));

    // split rows into columns

    for (i=0; i<clipRows.length; i++) {
        clipRows[i] = clipRows[i].split(String.fromCharCode(9));
    }


    // write out in a table

    newTable = document.createElement("table")
    newTable.border = 1;
    for (i=0; i<clipRows.length - 1; i++) {

        newRow = newTable.insertRow();

        for (j=0; j<clipRows[i].length; j++) {
            newCell = newRow.insertCell();
            if (clipRows[i][j].length == 0) {
                newCell.innerText = ' ';
            }
            else {
                newCell.innerText = clipRows[i][j];
            }
        }
    }

    document.body.appendChild(newTable);
}
</script>
</head>
<body>
<input type="button" onclick="clip()">
</body>
</html>

Ответ 2

Вот код javascript, который я создал (на основе полезных ответов). Я новичок в javascript, поэтому я уверен, что есть намного лучший способ сделать это, но, похоже, он работает... Цель состоит в том, чтобы "вставить" два столбца числовых данных в текстовую область из таблицы (I 'пробовал как Excel, так и google-таблицу) и создавать векторы с плавающей запятой "xf" и "yf". Надеюсь, полезно кому-то. Критика приветствуется...

Предполагается, что они существуют на странице html...

<textarea id="psmtext" rows=24 cols=72> </textarea>

<input type="button" value="run code" onClick="psmtest();">



function psmtest(){

var psmtext = document.getElementById("psmtext"); var st = psmtext.value; Ast = st.split("\n"); var numrows = Ast.length;

var ii; var xs = []; var ys = []; for (ii = 0 ; ii < numrows ; ii++) { // tab or comma deliminated data if ( Ast[ii].split(",",2)[1] != null ){ ys[ii] = Ast[ii].split(",")[1]; xs[ii] = Ast[ii].split(",")[0];} if ( Ast[ii].split("\t",2)[1] != null ){ ys[ii] = Ast[ii].split("\t")[1]; xs[ii] = Ast[ii].split("\t")[0];} }

var xss = []; var yss = []; var numgoodrows = 0; var iii =0; for (ii = 0 ; ii < numrows ; ii++) { if ( xs[ii] != null && ys[ii] != null) { xss[iii] = xs[ii]; yss[iii] = ys[ii]; iii++; } } numgoodrows = iii; // next I need to convert to floating point array var xf = [], var yf = [];

var xf = []; var yf = []; for (ii = 0 ; ii < numgoodrows ; ii++) { xf[ii] = parseFloat(xss[ii]); yf[ii] = parseFloat(yss[ii]); }

}

Ответ 3

Это будет очень сложно сделать очень хорошо.

Сверху моей головы, я бы сказал, лучший подход - дать пользователям <textarea>, которые они могут вставить. Затем в обработчике событий onchange используйте некоторый синтаксический анализ JS, чтобы выяснить, где строки и столбцы выстраиваются в линию, создают таблицу HTML и вводят ее в DOM.

Это должно работать нормально для относительно "квадратного" набора данных - у вас могут возникнуть проблемы с объединенными столбцами/строками и "зубчатыми" данными

Ответ 4

Хотя этот вопрос считается уже отвеченным (и является старым), я хотел бы указать, что в настоящее время есть лучшие решения, см. jQuery Spreadsheet/Grid plugin с копией/вставить из/в Excel. Мне особенно нравится минимализм HandsOnTable, который был предложен warpech (также создатель этого плагина jQuery). Плагин по-прежнему поддерживается очень хорошо.