2015-05-29 4 views
0

Я включил следующие функции, чтобы взять таблицу с данными и экспортировать ее в лист Excel с различными интернет-источниками. Он отлично работает с английскими персонажами, но когда таблица содержит китайские буквы, документ excel показывает случайные символы, а не китайский. Это связано с кодированием в Excel V. на моей странице? Как я могу это исправить?Китайские символы, потерянные в Excel

function exportToExcel(table, name) 
{ 
    var uri = 'data:application/vnd.ms-excel;base64,';//application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
    var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'; 

    if(!table.nodeType) 
     table = document.getElementById(table); 

    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}; 
    uri += toBase64(format(template, ctx)); 

    //window.location.href = uri; 

    var dlLink = document.createElement('a'); 
    if (typeof dlLink.download === 'string') { 
     document.body.appendChild(dlLink); // Firefox requires the link to be in the body 
     dlLink.download = outputFile; 
     dlLink.href = uri; 
     dlLink.click(); 
     document.body.removeChild(link); // remove the link when done 
    } else { 
     location.replace(uri); 
    } 
} 

function toBase64(data) 
{ 
    if (window.btoa) 
     return window.btoa(unescape(encodeURIComponent(data))); 
    else // IE 
    { 
     var strUni = data; 
      var strUtf = strUni.replace(/[\u0080-\u07ff]/g, 
      function(c) { 
       var cc = c.charCodeAt(0); 
       return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f); 
      }) 
      .replace(/[\u0800-\uffff]/g, 
      function(c) { 
       var cc = c.charCodeAt(0); 
       return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f); 
      }); 
      return strUtf; 

    } 
} 

function format(template, ctx) 
{ 
    return template.replace(/{(\w+)}/g, function(m, p) { return ctx[p]; }); 
} 
+0

Добро пожаловать в прекрасный мир 'char encoding'! Это может помочь: http://superuser.com/questions/280603/how-to-set-character-encoding-when-opening-excel – Pogrindis

+0

Я просто смотрел на это, как это помогает? – user3916570

+0

Ах, я вижу. Как я могу сказать excel, чтобы открыть документ как UTF-8, не вставляя конечных пользователей в свои настройки? – user3916570

ответ

0

Я добавил в голову тег в моем шаблоне строки, и это говорит первенствовать, чтобы открыть файл в кодировке UTF-8. Это сохранило китайских символов в excel.

Смежные вопросы