职场必看的12个寓言故事
2007-01-31 10:43
357 查看
联通一般提供的号段都是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(); } }