java像excel表格列一样添加一列后列名输出A~Z或AA~AZ等求输入1则输出为A,输入27则输出AA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java像excel表格列一样添加一列后列名输出A~Z或AA~AZ等求输入1则输出为A,输入27则输出AA相关的知识,希望对你有一定的参考价值。

求代码

可以用如下代码实现改功能,输入一个数字27返回AB

String[] array = new String[] "A", "B", "C", "D", "E", "F", "G", "H","I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z" ;

int num = 428;
int count = 26;
System.out.println("num/count=" + num/count);
String out = "";
if (num/count != 0)
out = array[num/count-1];
if (num%count == 0)
out = out + array[num%count];
System.out.println(out);
else
out = out + array[num%count-1];
System.out.println(out);

else
out = array[num-1];
System.out.println(out);
参考技术A  import java.util.HashMap;
import java.util.Iterator;
public class test1 

 /**
  * 利用HashMap
  * @param args
  */
 public static void main(String[] args) 

  HashMap<String,String> hm=new HashMap<String,String>();
  for(int k=0;k<=26;k++)
   int j=k>=1?k:0;
   for(int i=1;i<=26;i++)
    if(j>=1)
     hm.put(k*26+i+"",((char)(j+64))+""+((char)(i+64)));
    else
     hm.put(k*26+i+"",((char)(i+64))+"");
   

  
  Iterator it=hm.keySet().iterator();
  while(it.hasNext())
   String key=(String)it.next();
   //用列号1、27、28来做测试是否正确
   if(key.equals(1+"")||key.equals(27+"")||key.equals(28+""))
    String value=hm.get(key);
    System.out.println(value);
   
  
 

参考技术B 实际就是10进制转换为26进制,可以参考10进制转2进制、8进制、16进制。自己实现试试看 参考技术C public class VersionCode 
    public static Integer CodeConvert(String s) 
        if (s==null || s.length()==0) return 0; 
        int n = 0;
        char[] cc=s.toCharArray();
        for (int i = s.length() - 1, j = 1; i >= 0; i--, j *= 26)
             char c = cc[i];
            if (c < 'A' || c > 'Z') return 0;
            n += ((int)c - 64) * j;
        
        return n;
    

    public static String CodeConvert(int n) 
        String s = "";
            while (n > 0)
                int m = n % 26;
                if (m == 0) m = 26;
                s = (char)(m + 64) + s;
                n = (n - m) / 26;
            
            return s;
    

    public static void main(String[] args) 
        for (int i=1;i<1000;i++) 
            System.out.println("i="+i+" =>"+CodeConvert(i));
        
        System.out.println("i=AAA"+" =>"+CodeConvert("AAA"));
    

向熊猫数据框添加一列

【中文标题】向熊猫数据框添加一列【英文标题】:Adding a column to panda dataframe 【发布时间】:2021-06-11 17:25:19 【问题描述】:

我已经尝试了几个小时来找到一种方法来复制列 n 次并将它们添加到 Dataframe 但运气不佳。请帮忙!

当前数据框:

    0
0   2
1   4
2   5
3   6
4   9

输出:

    0  1 2 ... 99
0   2  2 2     2
1   4  4 4     4 
2   5  5 5     5
3   6  6 6     6
4   9  9 9     9

【问题讨论】:

pd.concat([df]*100, axis = 'columns') 可能吗?对于列名,您可以在连接后传递df.columns = np.arange(0, len(df)) 【参考方案1】:

可能有几种方法,一种方法是这样的:

df= pd.DataFrame()
    for i in range(5):
        for j in range(0,10):
            df.loc[i,j] = i+j
        
df
     0    1    2    3    4    5     6     7     8     9
0  0.0  1.0  2.0  3.0  4.0  5.0   6.0   7.0   8.0   9.0
1  1.0  2.0  3.0  4.0  5.0  6.0   7.0   8.0   9.0  10.0
2  2.0  3.0  4.0  5.0  6.0  7.0   8.0   9.0  10.0  11.0
3  3.0  4.0  5.0  6.0  7.0  8.0   9.0  10.0  11.0  12.0
4  4.0  5.0  6.0  7.0  8.0  9.0  10.0  11.0  12.0  13.0

【讨论】:

【参考方案2】:

正如@sammywemmy 在评论中提到的,您可以使用:-

df=pd.concat([df]*100, axis = 'columns')

之后重命名列:-

df.columns=range(0,len(df.columns))

【讨论】:

【参考方案3】:
>>> df
   0
0  2
1  4
2  5
3  6
4  9

.iloc 是另一种选择

>>> df.iloc[:, [0] * 10]
   0  0  0  0  0  0  0  0  0  0
0  2  2  2  2  2  2  2  2  2  2
1  4  4  4  4  4  4  4  4  4  4
2  5  5  5  5  5  5  5  5  5  5
3  6  6  6  6  6  6  6  6  6  6
4  9  9  9  9  9  9  9  9  9  9

【讨论】:

以上是关于java像excel表格列一样添加一列后列名输出A~Z或AA~AZ等求输入1则输出为A,输入27则输出AA的主要内容,如果未能解决你的问题,请参考以下文章

c#怎么在dataGridView里面添加一列?

关于DEVEXPRESS 添加图片列

如何在一个DataGridView中的一列添加DateTimePicker控件 C#

在分页之后js就失效了,是要在表格里添加一列,第一页就有但是第二页以后就没有了

如何在表格的特定位置添加一列? [复制]

如何在dxdbgrid的首列,加个自动序号列?