java xls文件数据导入

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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值