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;
}
}
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;
}
}
相关文章推荐
- Spring工作原理
- java.util.Collections.max()方法实例
- Maven搭建SpringMVC+Mybatis项目详解
- Spring动态切换多数据源解决方案
- Eclipse快捷键汇总
- Eclipse版本整理
- Eclipse如何快速修改包名及工程名
- Quartz使用-入门使用(java定时任务实现)
- Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器
- JAVA(十一)java面向对象5-继承
- Eclipse下svn的创建分支/合并/切换使用
- Java 中基本类型和包装类之间的转换
- Java并发编程二:Callable Future
- Thrift-java实例
- 生产者-消费者模型的Java实现
- Java 中的包装类
- Selenium Web 自动化 - Selenium(Java)环境搭建
- JAVA设计模式--状态模式
- 在eclipse中启动服务器报ERROR:transport error 202 ...ERROR: JDWP Transport dt_socket failed to initialize...
- java反射基础