将联通运营商提供的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();

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值