ОБНОВЛЕНИЕ: Это верно только в том случае, если вы используете ONLYOFFICE вместо MS Excel.
На самом деле есть поток всех ответов, представленных здесь, а также принятых. Суть в том, что когда у вас есть пустая ячейка в Excel и вы копируете ее, в буфере обмена у вас есть 2 символа табуляции рядом друг с другом, поэтому после разбиения вы получаете один дополнительный элемент в массиве, который затем отображается как дополнительная ячейка в этой строке. и перемещает все остальные клетки на одну. Поэтому, чтобы избежать этого, вам в основном нужно заменить все двойные символы табуляции (вкладки рядом друг с другом) в строке на один символ табуляции и только потом разбивать его.
Обновленная версия jsfiddle @ userfuser поможет вам решить эту проблему путем фильтрации вставленных данных с помощью removeExtraTabs
http://jsfiddle.net/sTX7y/794/
function removeExtraTabs(string) {
return string.replace(new RegExp("\t\t", 'g'), "\t");
}
function generateTable() {
var data = removeExtraTabs($('#pastein').val());
var rows = data.split("\n");
var table = $('<table />');
for (var y in rows) {
var cells = rows[y].split("\t");
var row = $('<tr />');
for (var x in cells) {
row.append('<td>' + cells[x] + '</td>');
}
table.append(row);
}
// Insert into DOM
$('#excel_table').html(table);
}
$(document).ready(function() {
$('#pastein').on('paste', function(event) {
$('#pastein').on('input', function() {
generateTable();
$('#pastein').off('input');
})
})
})