`
lijunjie
  • 浏览: 390764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将联通运营商提供的xls表格,转化为规范的号段

阅读更多
联通一般提供的号段都是xls表格,我们使用时需要把他转化成号段,地区,这样的格式方便查找和管理。
实现读取xls表格,然后根据表格中的内容分解。合成自己需要的内容。




import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import java.io.File;
import java.io.IOException;
import java.util.Vector;
/**
 * 
 * @author lijunjie
 *
 *  第一列是城市名称
 *  第零行是号段前缀
 *  根据运营商提供的xls表格
 *  生成可插入数据库的规范号段
 */
public class ReadXls {
	int cols=44;
	int rows=13;
	
	private Vector mobilelists=new Vector();
	
	public void readContent()
	{
		Workbook workbook=null;
		try {
			workbook = Workbook.getWorkbook(new File("c:\\tddownload\\g.xls"));
		} catch (BiffException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Sheet sheet=workbook.getSheet(0);

		
		for(int i=2;i<cols;i++)
		{
			for(int j=2;j<rows;j++)
			{
				String preffix=getContent(sheet,i,0);
				preffix=preffix.replaceAll("H1H2H3","");
				String city=getContent(sheet,1,j);
				if(!preffix.trim().equals("")&&!preffix.trim().equals("地市"))
					createContentBySplit(getContent(sheet,i,j),city,preffix);

			}
			
		}
		
		

		workbook.close();
	}
	/**
	 * 获取i列j行的数据
	 * @param sheet
	 * @param i
	 * @param j
	 * @return
	 */
	public String getContent(Sheet sheet,int i,int j)
	{
		
		Cell c2=sheet.getCell(i,j);
		return c2.getContents();
	}
	/**
	 * 根据子号段类型,选择叠加还是直接添加前缀和城市列表
	 * @param content
	 * @param city
	 * @param preffix
	 */
	public void createContent(String content,String city,String preffix)
	{
		String tmp="";
		if(content.indexOf("-")>0)
		{
		String[] nums=content.split("-");
		try
		{
			int start=Integer.parseInt(nums[0]);
			int end=Integer.parseInt(nums[1]);
			
			for(int i=start;i<=end;i++)
			{
				mobilelists.add(city+","+preffix+i);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		}

		else 
		{
			mobilelists.add(city+","+preffix+content);
		}
	}
	
	/**
	 * 将取得号段整理,分解成可处理的号段
	 * @param content
	 * @param city
	 * @param preffix
	 */
	public void createContentBySplit(String content,String city,String preffix)
	{
		content=content.replaceAll("、",",");
		content=content.replaceAll(" ",",");
		content=content.replaceAll(",",",");
		String[] nums=content.split(",");
		for(int i=0;i<nums.length;i++)
		{
			
			if(!nums[i].trim().equals(""))
			createContent(nums[i],city,preffix);
		}
	}
	/**
	 * 打印号段表
	 */
	public void printMobile()
	{
		for(int i=0;i<mobilelists.size();i++)
		{
			System.out.println(mobilelists.get(i));
		}
	}
	
	
	public static void main(String[] args)
	{
		ReadXls rx=new ReadXls();
		rx.readContent();
		
		rx.printMobile();
		
	}

}


  • 大小: 10.9 KB
  • 大小: 3.2 KB
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics