2011-11-23 16 views
10

Eşlenebilir bir e-tablo dışa aktarma özelliği için bazı istemci tarafı işlevleri oluşturuyorum.Numaraları 26 karakter alfabesinin ötesindeki harflere dönüştürme

Ben sütunların sıralama düzenini yönetmek için jQuery kullanıyorum, ancak her sütun bir Excel elektronik tablosu gibi sıralanır yani abcd e ...... xyz aa ab ac ad vs vs

Ben nasıl mektup olarak bir sayı oluşturmak? Sabit bir değerler dizisi tanımlamalı mıyım? Yoksa bunu üretmenin dinamik bir yolu var mı?

cevap

44

Bunu

function colName(n) { 
 
     var ordA = 'a'.charCodeAt(0); 
 
     var ordZ = 'z'.charCodeAt(0); 
 
     var len = ordZ - ordA + 1; 
 
     
 
     var s = ""; 
 
     while(n >= 0) { 
 
      s = String.fromCharCode(n % len + ordA) + s; 
 
      n = Math.floor(n/len) - 1; 
 
     } 
 
     return s; 
 
    } 
 

 
// Example: 
 

 
    for(n = 0; n < 125; n++) 
 
      document.write(n + ":" + colName(n) + "<br>");

+0

Mükemmel çalışıyor. Herkese yardım ettiğin için teşekkürler! –

+2

İyi cevap, ama arkasında bir açıklama görmeyi çok isterdim. 97 gibi şeyler küçük 'a' vb. – donnapep

1

numbers, sütunlarınızın sayılarını içerdiğini varsayarak bu şekilde kod kullanabilirsiniz. Bu kodundan sonra Sütunlarınızdan için dize adları alırsınız Yani:

var letters = ['a', 'b', 'c', ..., 'z']; 
var numbers = [1, 2, 3, ...]; 
var columnNames = []; 
for(var i=0;i<numbers.length;i++) { 
    var firstLetter = parseInt(i/letters.length) == 0 ? '' : letters[parseInt(i/letters.length)]; 
    var secondLetter = letters[i%letters.length-1]; 
    columnNames.push(firstLetter + secondLetter); 
} 
+0

gibi bir şey için bunun için teşekkürler ihtiyacımız olacak. Bu harika çalışıyor ama sadece tek bir karakterle başlamıyor, yani a, b, c, d .... x, y, z, aa, ab, ac? –

+0

Cevabımı yukarıda güncelledim :) şimdi iyi çalışıyor olmalı :) – haynar

İlgili konular