2014-04-23 27 views
0

我一直在尋找答案,現在我想我已經結束了無限循環的搜索。在MS Excel中打開.csv文件給出錯誤的Utf-8格式(Javascript)

我正在使用JavaScript將數據導出到.csv文件。這裏沒有任何問題,它在Google電子表格中顯示完美無瑕的蘋果數字&。對我來說不幸的是,我的客戶在Windows的Mac &上使用MS Excel,並且至少不是技術精湛的人。因此,在Excel中使用「導入」選項是爲了真正推動它們的界限。雖然在選擇正確的選項後它會提供正確的格式。

因此,問題是:.csv文件在雙擊或選擇「open with ..」時未在Excel中以正確的格式打開。例如,「Ö」顯示爲「ö」。我遇到了很多答案,建議將BOM添加到文件中,但是我還沒有找到正確的方法。這是一個字符串值,我把它放在第一個單元格中,或者這是寫入文件時需要在JavaScript代碼中的東西嗎?

我在.csv文件中使用「,」作爲分隔符。

任何可以解決這個問題的幫助都會帶來永恆的感激和欣賞。

該應用程序是在Appcelerator Titanium中用JavaScript編寫的iOS和Android應用程序。寫.csv文件中的代碼如下,其中「輸入」是一個數組:

exports.exportCsvData = function(input) 
{ 

var rowTxt = ""; 
for(var i=0;i < input.length; i++){ // row iteration 
    for(var j = 0; j < input[i].length; j++){ // column iteration 
     rowTxt += '"' + input[i][j] + '"'; 

     if(j < (input[i].length-1)) 
     { 
      rowTxt += ','; 
     } 
    } 
    rowTxt += '\n';// adding new line at end of row 
} 

// creating output file in application data directory 
var outputFile = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,'min_traningsdagbok.txt'); 
// writing data in output file 
    outputFile.write(rowTxt); 


if(outputFile.exists){ 
    Ti.API.info("CSV generated!!!"); 
} 

// return output file path 
return outputFile.nativePath;  
}; 

回答

0

對於此處出於同樣的原因結束了人:

不用說有關於一個巨大的問題Utf-8格式化CSV文件在不同的客戶端上。特別是MS Excell。我的解決方案是放棄CSV文件並輸出一個.html文件,其中包含一個html表格。這可以在Windows和Mac MS Excel上正確打開。

var htmlHead = '<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body><table style="width:300px"><table border="1" cellspacing="1" cellpadding="5">'; 

    var str = ""; 

     str += htmlHead; 

      for(var i = 0; i < input.length; i++){ 
       str += '<tr>'; 
       for (var j = 0; j < input[i].length; j++){ 
        str += '<td>' + input[i][j] + '</td>'; 
       } 
       str += '</tr>'; 
      } 

      str += '</table>'; 

    var htmlEnd = '</body> </html>'; 

outputFileHtml.write(htmlHead+str+htmlEnd); 
相關問題