查看: 577|回复: 0

[Java学习] Java实现的Excel列号数字与字母互相转换功能

发表于 2018-4-15 08:00:01

本文实例讲述了Java实现的Excel列号数字与字母互相转换功能。分享给大家供大家参考,具体如下:

我们在实现对Excel的导入导出的时候,往往需要准确的给用户提示信息,提示到具体的Excel的单元格,这里就需要对Excel的列号进行数字和字母的转换,今天正好用到这个需求,所以就写了一个demo,总结一下:

Java实现:

  1. package test;
  2. /**
  3. * Deal with Excel column indexToStr and strToIndex
  4. * @author Stephen.Huang
  5. * @version 2015-7-8
  6. */
  7. public class ExcelColumn {
  8. public static void main(String[] args) {
  9. String colstr = "AA";
  10. int colIndex = excelColStrToNum(colstr, colstr.length());
  11. System.out.println("'" + colstr + "' column index of " + colIndex);
  12. colIndex = 26;
  13. colstr = excelColIndexToStr(colIndex);
  14. System.out.println(colIndex + " column in excel of " + colstr);
  15. colstr = "AAAA";
  16. colIndex = excelColStrToNum(colstr, colstr.length());
  17. System.out.println("'" + colstr + "' column index of " + colIndex);
  18. colIndex = 466948;
  19. colstr = excelColIndexToStr(colIndex);
  20. System.out.println(colIndex + " column in excel of " + colstr);
  21. }
  22. /**
  23. * Excel column index begin 1
  24. * @param colStr
  25. * @param length
  26. * @return
  27. */
  28. public static int excelColStrToNum(String colStr, int length) {
  29. int num = 0;
  30. int result = 0;
  31. for(int i = 0; i < length; i++) {
  32. char ch = colStr.charAt(length - i - 1);
  33. num = (int)(ch - 'A' + 1) ;
  34. num *= Math.pow(26, i);
  35. result += num;
  36. }
  37. return result;
  38. }
  39. /**
  40. * Excel column index begin 1
  41. * @param columnIndex
  42. * @return
  43. */
  44. public static String excelColIndexToStr(int columnIndex) {
  45. if (columnIndex <= 0) {
  46. return null;
  47. }
  48. String columnStr = "";
  49. columnIndex--;
  50. do {
  51. if (columnStr.length() > 0) {
  52. columnIndex--;
  53. }
  54. columnStr = ((char) (columnIndex % 26 + (int) 'A')) + columnStr;
  55. columnIndex = (int) ((columnIndex - columnIndex % 26) / 26);
  56. } while (columnIndex > 0);
  57. return columnStr;
  58. }
  59. }
复制代码

测试结果:

  1. ‘AA' column index of 27
  2. 26 column in excel of Z
  3. ‘AAAA' column index of 18279
  4. 466948 column in excel of ZNSN
复制代码

更多关于java相关内容感兴趣的读者可查看本站专题:《Java操作Excel技巧总结》、《Java+mysql数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》及《Java操作DOM节点技巧总结》

希望本文所述对大家java程序设计有所帮助。



回复

使用道具 举报