您的位置:首页 > 编程语言 > Java开发

java xls文件数据导入

2016-07-29 18:40 501 查看
package com.yicomm.mobile.goods.charge.bo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.yicomm.datapush.bo.DaoFactory;

import com.yicomm.mobile.commons.Constants4Goods;

import com.yicomm.mobile.goods.charge.dao.ItemOptimiCateDao;

import com.yicomm.mobile.goods.charge.dao.ItemOptimiInfo2Dao;

import com.yicomm.mobile.goods.charge.entity.ItemOptimiCate;

import com.yicomm.mobile.goods.charge.entity.ItemOptimiInfo2;

public class ItemOptimiInf2Bo {
private static ItemOptimiInf2Bo instance;
//protected ItemOptimiCateDao itemOptimiCateDao = DaoFactory.getInstance().getItemOptimiCateDao(Constants4Goods.MACHINE_NO);

private ItemOptimiInf2Bo(){

}
public static  ItemOptimiInf2Bo getInstance() {
if(instance==null) {
synchronized(ItemOptimiInf2Bo.class){
if(instance==null){
instance = new ItemOptimiInf2Bo();
}
}
}
return instance;
}
public void importItemOptimiInf2(){
Constants4Goods.MACHINE_NO =0;
ItemOptimiCateDao itemOptimiCateDao = DaoFactory.getInstance().getItemOptimiCateDao(Constants4Goods.MACHINE_NO);
ItemOptimiInfo2Dao itemOptimiInfo2Dao = DaoFactory.getInstance().getItemOptimiInfo2Dao(Constants4Goods.MACHINE_NO);
String filePath = "D:\\import\\";
File dir = new File(filePath);
if(dir.exists()){ //存在当前文件夹才进行导入
System.out.println("文件夹存在,需要处理内容");
//获取文件夹下所有文件
File[] fs = dir.listFiles();
if(fs.length>0){ //存在需要导入的文件
for(int i=0;i<fs.length;i++){
File file = fs[i];
String path = file.getAbsolutePath(); //文件绝对路径
System.out.println(path);

String fileName = file.getName();
Map<String,String> word = getKeyWordAndWordType(fileName);
String cidName = word.get("keyWord");
String wordType = word.get("wordType");

//类目查询
ItemOptimiCate cate = new ItemOptimiCate();
cate.setName(cidName);
List<ItemOptimiCate> cateList = itemOptimiCateDao.getItemOptimiCateListByName(cate);
if(cateList!=null && cateList.size()>0){
//解析xls文件
List<ItemOptimiInfo2> optimiInfo2List =  readXml(path,wordType);
if(optimiInfo2List!=null && optimiInfo2List.size()>0){
for(ItemOptimiCate obj:cateList){
long cid = obj.getCid();
for(ItemOptimiInfo2 info2 : optimiInfo2List){
//检查当前类目当前关键词当前类型是否存在,存在先删除,再添加
info2.setCid(cid);
List<ItemOptimiInfo2> info2List = itemOptimiInfo2Dao.getItemOptimiInfo2List(info2);
if(info2List !=null && info2List.size()>0){
for(ItemOptimiInfo2 obj1:info2List){
itemOptimiInfo2Dao.deleteItemOptimiInfo2(obj1.getId());
}
}
itemOptimiInfo2Dao.saveItemOptimiInfo2(info2);

}
}
}

}
//处理完毕删除文件
file.delete();
}
}

}else{
System.out.println("导入文件夹不存在,不处理啦啦啦~~~~");
}
}
//解析文件,返回list
public List<ItemOptimiInfo2> readXml(String filePath,String wordType){
List<ItemOptimiInfo2> list = new ArrayList<ItemOptimiInfo2>();

boolean isE2007 = false;    //判断是否是excel2007格式  
if(filePath.endsWith("xlsx"))  isE2007 = true;  
try {
InputStream input = new FileInputStream(filePath);
Workbook wb  = null;  

            //根据文件格式(2003或者2007)来初始化  

            if(isE2007)  

                wb = new XSSFWorkbook(input);  

            else  

                wb = new HSSFWorkbook(input);

            

            Sheet sheet = wb.getSheetAt(0);     //获得第一个表单  

            Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器  

           

            while (rows.hasNext()) {

            Row row = rows.next();  //获得行数据  

            if(row.getRowNum()>4){ //从第5行开始处理,之前都是无效数据

            ItemOptimiInfo2 info2 = new ItemOptimiInfo2();

            System.out.println("Row #" + row.getRowNum()+"-->"+row.getCell(0));  //获得行号从0开始

            String num = row.getCell(0).toString(); //序号

            info2.setOrderNum(Integer.valueOf(num));

            info2.setWordtype(Short.valueOf(wordType));

            String key = row.getCell(1).toString(); //关键词

            info2.setKeyword(key);

            int iTmp = (int) Math.round(Math.random()*10);

           

             

            if(wordType!=null && ("0".equals(wordType)||"1".equals(wordType))){//词类型

            //商城点击率

            String tmClickRate = row.getCell(3).toString(); 

            double dtmClickRate =0.00;

            if(tmClickRate!=null && !"".equals(tmClickRate)){

            tmClickRate = tmClickRate.replace("%", "");

                dtmClickRate= Double.valueOf(tmClickRate)*iTmp -iTmp;

            }else{

            dtmClickRate = Math.random();

            }

            info2.setTmClickRate(Double.valueOf(dtmClickRate));

            }else{

            //相关搜索词数

            String relatedSuv = row.getCell(3).toString();

            double iRelateSuv = 0;

            if(relatedSuv!=null && !"".equals(relatedSuv)){

            iRelateSuv = Double.valueOf(relatedSuv)-iTmp;

            }else{

            iRelateSuv = (double) (iTmp * Math.random()*100);

            }

            info2.setRelatedSuv(iRelateSuv);

            }

            //搜索人气

            String suv = row.getCell(2).toString(); 

            double iSuv = 0;

             

            if(suv !=null && !"".equals(suv)){

            iSuv = Double.valueOf(suv)+iTmp;

            }else{

            iSuv = (int) (iTmp * Math.random()*100);

            }

            info2.setSuv(iSuv);

            //点击率

            String clickRate = row.getCell(4).toString();

            double dClickRate = 0.00;

            if(clickRate!=null && !"".equals(clickRate)){

            dClickRate =  Double.valueOf(clickRate)*Math.random();

            }else{

            dClickRate = Math.random();

            }

            info2.setClickRate(dClickRate);

            //点击人气

            String clickUv = row.getCell(5).toString();

            double iClickUv = 0;

            if(clickUv !=null && !"".equals(clickUv)){

            iClickUv = Double.valueOf(clickUv)+iTmp;

            }else{

            iClickUv = (double) (iTmp * Math.random()*100);

            }

            info2.setClickUv(iClickUv);

            //支付转化率

            String payRate = row.getCell(6).toString();

            double dPayRate = 0.00;

            if(payRate!=null && !"".equals(payRate)){

            dPayRate =  Double.valueOf(payRate)*Math.random();

            }else{

            dPayRate = Math.random();

            }

            info2.setPayRate(dPayRate);

            //参考价

            String p4pRefPrice = row.getCell(6).toString();

            double dP4pRefPrice = 0.00;

            if(p4pRefPrice!=null && !"".equals(p4pRefPrice)){

            dP4pRefPrice =  Double.valueOf(p4pRefPrice)*iTmp;

            }else{

            dP4pRefPrice = Math.random()*iTmp;

            }

            info2.setP4pRefPrice(dP4pRefPrice);

            list.add(info2);

            }

           

            }

            
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  //建立输入流  
 
return list;
}
//关键词及类型分析
public Map<String,String> getKeyWordAndWordType(String name){
Map<String, String> map = new HashMap<String, String>();
int endIndex= name.lastIndexOf("-");
//不好判断起始位置,但标题格式固定,现在写死
String subStr = name.substring(29, endIndex);
int index2 = subStr.lastIndexOf("-");
String keyWord = subStr.substring(0,index2).replace("-", "/");
String wordType = subStr.substring(index2+1);
String type = "0";
if(wordType!=null && !"".equals(wordType)){
if("热搜搜索词".equals(wordType)){
type = "0";
}else if("热搜长尾词".equals(wordType)){
type="1";
}else if("热搜核心词".equals(wordType)){
type="2";
}else if("热搜修饰词".equals(wordType)){
type="3";
}
}
map.put("keyWord", keyWord);
map.put("wordType", type);

return map;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: