生成类似 excel 版本号 A ,B,C,...,Z AA,AB,..,AZ ...

          生成类似 excel 版本号 A ,B,C,...,Z  AA,AB,..,AZ ...

  最近遇到一个需求:每次对一条记录进行修改或指定操作,需要生成一个历史版本,版本号需要采用类似excel表格的列号的形式,第一版本为A,第二版本为B,以此类推由A-Z,AA,AB,AC,...,AZ,ZZ,AAA-ZZZ。由于考虑到后面有根据版本号排序,根据版本号范围查询数据的需求,思考了一下,采用了数据库的版本号字段存的是数字1,2,3,4 ....分别对应A,,B,C,D ....,52对应AZ,这样的一个对应关系,查询到数据的时候把数字的版本号通过计算查询出对应的字符串版本(A,B,C...)在前台展示。如果需要根据版本号去数据库查询数据,可以根据前台传入的字符串版本号转换后再拼接参数查询,存数字最主要的是为了能更好的比较大小,下面把主要代码记录一下,大家如果有什么更好的解决方案,也可在下方留言大家一起讨论。

  

    /**
     * 将字符串(a-z)转换成数字
     * 按照excel表格的列号(如:a-->1,z-->26,aa->27,az-52,....)
     * @param str
     * @return
     */
    public static int str2int(String str){
		char[] array = str.toCharArray();
		int result = 0;
		for (int j = 0; j < array.length; j++) {
			result*=26;
			result+=char2int(array[j]);
		}
		return result;
	};

	/**
	 * 将字符转换成整数
	 * @param ch
	 * @return
	 */
	public static int char2int(char ch){
		int result = -1;
		if(ch >= ‘A‘ && ch <= ‘Z‘){
			result = ch - ‘A‘ + 1;
		}else if(ch >= ‘a‘ && ch <= ‘z‘){
			result = ch - ‘a‘ + 1;
		}
		return  result;
	}

	/**
	 * 将1转换成A,26转换成Z,无限往后推,对应excel表格的列
	 * @param num
	 * @return
	 */
	public static String int2Str(int num){
		String result = "";
		num = num <=0 ? 1 : num;//小于等于0是输出A
		while(num > 0){
			int m = num %26;
			if(m == 0) m = 26;
			result = (char)(m + 64) + result;
			num = (num-m)/26;
		}
		return result;
	}

  

原文地址:https://www.cnblogs.com/lzjdm/p/10881404.html

时间: 2024-10-17 23:56:49

生成类似 excel 版本号 A ,B,C,...,Z AA,AB,..,AZ ...的相关文章

代码段:通过索引获取对应的Excel列名; 索引从0开始,返回形如 A,B,C,...,Z,AA,AB,...,AZ,BA,...,ZZ,AAA,AAB,......

项目需要,今天写了个前端导出Excel的方法 /** * 通过索引获取对应的Excel列名 * 索引从0开始,返回形如 A,B,C,...,Z,AA,AB,...,AZ,BA,...,ZZ,AAA,AAB,...... */var getExcelColumnName = function (index) { var colName = ''; if (index >= 26) { colName = getExcelColumnName(index / 26 - 1); colName +=

【图解】Web前端实现类似Excel的电子表格

在本文中,我将用图解的方式用Wijmo(JavaScript库)中的SpreadJS来一步一步实现网页上的电子表格产品SpreadSheet(例如可构建Office 365 Excel产品.Google的在线SpreadSheet). 博文简介: Wijmo控件,是葡萄城提供的HTML\JavaScript库,目前最新版是2014 V2(2014.7.22号发布),支持jQuery UI和jQuery.jQuery Mobile.Angular.js.Bootstrap.js.Knockout.

java 生成简单word(利用Itext工具),生成简单Excel,以及下载笔记

1.java 生成简单word(包含图片表格) pom中加入itext 相关依赖 <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.lowagie</gr

ASP.NET实现类似Excel的数据透视表

代码: /Files/zhuqil/Pivot.zip 数据透视表提供的数据三维视图效果,在Microsoft Excel能创建数据透视表,但是,它并不会总是很方便使用Excel.您可能希望在Web应用程序中创建一个数据透视报表.创建一个简单的数据透视表可能是一件非常复杂的任务.所以,我打算不但为你提供一个非常有用的工具创建简单和高级的数据透视表,而且为你移除一些笼罩他们的神秘面纱. 目标是:我们想要有能力将datatable中的二维的数据转换成三维视图. 在大多数情况下,你会从数据库的查询数据

java生成简单Excel工作薄

前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jxl:全称JavaExcelAPI,是一个用来读写修改EXCEL的JAVA开源类库,使用起来相对简单. jar包下载地址: http://www.andykhan.com/jexcelapi/download.html 下面是刚写完的一个简单不能再简单的Demo了,没有任何附加样式,下班了,样式这周末

在工程里生成一个excel表格或者word文件

http://aobdo.com/2015/08/27/导出tableView数据至excel/?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1 1.现在开始进入正题,要先下载微软的excel库文件http://www.libxl.com/download.html,解压 2.里面有example,可以参考一下.把LibXL.framework导入自己的项目当中,

JAVA用freemarker生成复杂Excel。(freemarker)

在生成Excel的时候,大多时候都是使用poi,jxl等进行的,但是对于复杂的Excel来说,这个工作量是非常的大的,而且,对于我这么懒的人来说,这是相当痛苦的一件事情,所以,我不得不找找有没有简单一点的办法来搞定这个事情.我想到了上次用freemarker成功生成了Word文档.我就想可不可以也生成Excel呢?然后我就尝试.结果真行,不过,和生成Word文档有一些差别,好了,不废话了,上图. 上一张比较简单的Excel图. 这个,就是Excel的一个结构了,接下了,将它另存为“XML 电子表

php 备份数据库代码(生成word,excel,json,xml,sql)

单表备份代码: 复制代码代码如下: <?php class Db { var $conn; function Db($host="localhost",$user="root",$pass="root",$db="test") { if(!$this->conn=mysql_connect($host,$user,$pass)) die("can't connect to mysql sever"

把生成的excel文件直接提供为下载页效果

把php中的excel显示下载页下载到本地硬盘需要设置头信息: 代码: $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0")