2011-11-23 10 views
10

私は、マッピング可能なスプレッドシートのエクスポート機能のためにクライアント側の関数をいくつか作成しています。私はアルファベットを26文字のアルファベットを超えるアルファベットに変換する

どのようにすることができ、広告などなど......すなわちABCD Eのxyz AA AB ACを列のソート順序を管理するためにjQueryを使用していますが、各列は、Excelスプレッドシートのように注文され

手紙として数字を生成する?私は値の固定配列を定義する必要がありますか?または、これを生成する動的な方法はありますか?

答えて

44

私はあなたがそのためにこの

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

素晴らしい作品は完璧です。みんな助けてくれてありがとう! –

+2

良い答えですが、その背後に説明があるのが好きでした。 97のようなものは小さな「a」などを表します。 – donnapep

1

numbersに列の番号が含まれていると仮定すると、このようなコードを使用できます。だから、このコードの後に​​、あなたの列の文字列名を取得します:

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

おかげのようなものを探していると思います。それは素晴らしいですが、それはただの文字、すなわちa、b、c、d .... x、y、z、aa、ab、acで始まらないのですか? –

+0

私は上の私の答えを更新しました:)今それはうまくいくはずです:) – haynar

関連する問題