ATUALIZAÇÃO: Isso só é verdadeiro se você usar o ONLYOFFICE em vez do MS Excel.
Na verdade, há um fluxo em todas as respostas fornecidas aqui e também na aceita. O fluxo é que sempre que você tiver uma célula vazia no excel e copiá-la, na área de transferência você terá 2 caracteres de guia um ao lado do outro, então após a divisão você obtém um item adicional no array, que aparece como uma célula extra naquela linha e move todas as outras células em uma. Então, para evitar isso, você basicamente precisa substituir todos os caracteres de tabulação dupla (tabulações ao lado uma da outra) em uma string por um caractere de tabulação e só então dividi-lo.
Uma versão atualizada do jsfiddle de @ userfuser está aqui para corrigir esse problema, filtrando os dados colados com 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);
}
$('#excel_table').html(table);
}
$(document).ready(function() {
$('#pastein').on('paste', function(event) {
$('#pastein').on('input', function() {
generateTable();
$('#pastein').off('input');
})
})
})