2011-11-23 78 views
10

Tôi đang tạo một số hàm phía máy khách cho tính năng xuất bảng tính có thể đặt được.Chuyển đổi số thành chữ cái vượt quá 26 ký tự bảng chữ cái

Tôi đang sử dụng jQuery để quản lý thứ tự sắp xếp của các cột, nhưng mỗi cột được ra lệnh như một bảng tính Excel tức là abcd e ...... xyz aa ab ac quảng cáo vv vv

Làm thế nào tôi có thể tạo một số dưới dạng chữ cái? Tôi có nên xác định một mảng giá trị cố định không? Hoặc là có một cách năng động để tạo ra điều này?

Trả lời

44

Tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó như thế này

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

Tuyệt vời mà hoạt động hoàn hảo. Cảm ơn mọi người đã giúp đỡ! –

+2

Câu trả lời hay, nhưng tôi muốn có một lời giải thích đằng sau nó. Những thứ như 97 đại diện cho 'a' nhỏ. – donnapep

1

Bạn có thể sử dụng mã như thế này, giả sử rằng numbers chứa số cột của bạn. Vì vậy, sau khi mã này bạn sẽ nhận được những cái tên chuỗi cho các cột của bạn:

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

Cảm ơn vì điều đó. Điều đó hoạt động tốt nhưng nó không bắt đầu bằng một ký tự đơn nghĩa là a, b, c, d .... x, y, z, aa, ab, ac? –

+0

Tôi đã cập nhật câu trả lời của tôi ở trên :) bây giờ nó sẽ làm việc tốt :) – haynar

Các vấn đề liên quan