EXCEL单元格的获取——多例模式

由于Excel的单元格的行列与单元格是一一对应的,行与列组成的是一对联合主键,给定一个单元格行列或者给定一个单元格名称,需要找到相应的单元格;这样就形成了一种映射关系;需要使用单例模式的变式——多例模式,进行实现。

多例模式的核心是用一个HashMap<K,V>来实现这种映射关系,V明显是目标单元格,K必须保存单元格的行与列一一对应信息,可以用单元格名称来表示;实现代码如下:

import java.util.ArrayList;
import java.util.HashMap;

/**
 * @author lcx
 *
 */
public class CellMap {

	private static HashMap<String,CellMap> map=new HashMap();

	private CellMap(String cellName)
	{
		System.out.println("新建一个:"+cellName);
		map.put(cellName, this);
	}

	public static CellMap getInstance(int row,int col)
	{
		return getInstance( cellName(row,col));
	}

	public static CellMap getInstance(String cellName)
	{
		if(map.get(cellName)!=null)
			return map.get(cellName);
		else
			return new CellMap(cellName);
	}

	private static String cellName(int row,int col)
	{
		ArrayList<Character> list=new ArrayList();
		while(col>0)
		{
			list.add((char) (col%26+'A'-1));
			col/=26;
		}
		StringBuffer buffer=new StringBuffer();
		for(int i=list.size()-1;i>=0;i--)
			buffer.append(list.get(i));
		buffer.append(""+row);
		return buffer.toString();
	}

	public static void main(String[] args) {
		//首次获取
		for(int i=1;i<10;i++)
			for(int j=1;j<10;j++)
			{
				CellMap.getInstance(i, j);
			}
		//再次获取
		for(int i=1;i<10;i++)
			for(int j=1;j<10;j++)
			{
				CellMap.getInstance(i, j);
			}
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 06:18:59

EXCEL单元格的获取——多例模式的相关文章

POI读取excel单元格,获取单元格各类型值,返回字符串类型

package a; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.h

读取写入excel单元格

以下是一些对excel的一些基本操作 1:工程对excel类库的导入,如:c:\program files\Microsoft office\offiece11\excel.exe2:命名控件的引入: using Microsoft.office.Interop.Excel; 3:如果是对一个已经存在的excel文件进行操作则:Application app=new Application();Workbook wbook=app.Workbooks.Open("c:\\temp.xls&quo

Excel 单元格自定义格式技巧总结

第一部分 Excel 中的单元格格式是一个最基本但是又很高级的技能,说它基本是因为我们几乎天天都会用到它,会用它来设置一些简单的格式,比如日期,文本等等:高级是因为利用 Excel 单元格的自定义格式我们可以实现一些看起来非常神奇和有用的效果.下面我们就由浅入深的来介绍一下 Excel 单元格自定义格式的知识和技巧. 1."G/通用格式" 以常规的数字显示,相当于"分类"列表中的"常规"选项. 代码:G/通用格式.10 显示为 10:10.1 显

JAVA实现Excel——Excel单元格设计

Excel底层实现是使用C/C++实现的,而我若使用JAVA语言,首先需要对单元格进行对象化,即用一个Cell类来表示每一个单元格(实际上就是一个数据结构): 在我编程过程中,在设计一个简单的类时,往往需要从其父类.接口.Field.Method等几个方面进行分析,以满足功能.性能.可拓展性的要求. 1)接口分析 Serializable接口,EXCEL单元格需要实现复制功能,或者拖拽功能,就必须进行复制(必须为深复制),所以需实现Serializable接口,通过流的方法进行深复制 Compa

C# Excel 单元格编辑

public class ExcelReport    {  //Excel 文件修改要引用COM组件Microsoft Excel 11.0 Object Library  //using Microsoft.Office.Interop.Excel;  /// <summary>        /// 单元格修改        /// </summary>        /// <param name="filePath">excel路径<

Excel单元格内容太多会覆盖遮住下一单元格范围

Excel单元格内容太多会覆盖遮住下一单元格范围分步阅读 Excel中的单元格内容,有着不同的对齐方式.用户可根据自己的需求,在处理数据的时候,自行设置所需要的对齐方式. 当您在处理数据的时候,如果设置不当,就会遇到这样的问题:Excel单元格内容太多会覆盖遮住下一单元格范围. 可以通过如下的方法来解决. 方法/步骤 如下图,B2单元格,仅输入了几个中文,但是,由于列的宽度不够,因此,该单元格的内容会延伸到下一单元格并覆盖了下一单元格的范围.从而影响了下一单元格的输入与修改. 此时,我们需要的方

excel单元格中批量加入固定字符

excel单元格前怎么批量加字母 现在我要在联系人这列,每个姓名前加入衡阳的首字母简写(HY). 3 在同行上面随便找列,我找D列.输入公式:="HY"&A2. 5 输入后,点击回车.出现 “HY黑米哥” 6 单元格的下方不是有一个小方点吗,按着鼠标左键往下拖动直到结束 切记,此时不能直接把做好的复制粘贴过去,因为此时为公式,不是数值.可以用鼠标点击一下,上面显示公式. 方法一:选择性粘贴. 方法二:记事本方法.把处理好的数据复制,粘贴到记事本中. 全选记事本数据,复制.粘贴回

NPOI Excel 单元格背景颜色对照表

NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillPattern 为单元格背景色的填充样式. NPOI Excel 单元格背景颜色设置方法以及颜色对照表: 1 2 3 4 5 6 ICellStyle style = workbook.CreateCellStyle(); style.FillForegroundColor = NPOI.HSSF.U

C# 导入图片到Excel单元格

导出Excel功能时需要将数据中含有图片也导出到excel单元格中 public void InsertPicture(string RangeName, string PicturePath, Microsoft.Office.Interop.Excel.Worksheet worksheet) { Microsoft.Office.Interop.Excel.Range m_objRange = worksheet.get_Range(RangeName, Type.Missing); m_