`
tracy婷婷
  • 浏览: 24293 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

运用jui 读取excel文件

    博客分类:
  • Java
阅读更多

1.freemarker页面

 

<div class="pageHeader">
<form id="pagerForm" onsubmit="return iframeCallback(this);" enctype="multipart/form-data" action="sales/salesTmallStoreOrder.do?opType=UPLOAD" method="post">
		<div class="searchBar">
			<table class="searchContent">
				<tr>
					<td>选择时间:</td>
					<td><input type="text" name="storedate" class="date required" readonly="true" /></td>
					<td>天猫超市库存Excel:<input type="file" name="excel" /></td>
					<td><div class="buttonActive"><div class="buttonContent"><button type="submit">提交</button></div></div></td>
				</tr>
			</table>
		</div>
</form>
	</div>

 

 

2.struts配置文件

 

<struts>
	<package name="sales" extends="struts-tonicare" namespace="/mgmt/sales">
		<global-results>
			<result name="notLogin" type="freemarker">/WEB-INF/template${theme}/mgmt/main/ajaxResult.ftl</result>
		</global-results>
		<action name="salesTmallStoreOrder" class="mgmt.sales.SalesTmallStoreOrderAction">
			<result name="success" type="freemarker">/WEB-INF/template${theme}/mgmt/sales/salesTmallStoreOrder.ftl</result>
		</action>
	</package>
	
</struts>

 

 

3.相关的Java读取代码

 

import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.tonicare.action.mgmt.sales.vo.SalesTmallStoreOrderVo;
import com.tonicare.data.bean.CsStoreDate;
import com.tonicare.data.bean.LmProduct;
import com.tonicare.data.dao.SalesTMallDao;
import com.tonicare.framework.layer.MgmtService;
import com.tonicare.framework.layer.TonicareException;
import com.tonicare.framework.layer.AjaxResultVo.StatusCode;
import com.tonicare.util.BeanFactory;
import com.tonicare.util.Config;
import com.tonicare.util.Const;
import com.tonicare.util.LogHelper;

public class SalesTmallStoreOrderService extends MgmtService {

	@Override
	public Object invoke(Object inData) throws TonicareException {
		// TODO Auto-generated method stub
		SalesTmallStoreOrderVo vo=(SalesTmallStoreOrderVo) inData;
		if (Const.OPERATE_UPLOAD.equals(vo.getOpType())) {
			if (Config.DEBUG) 
				LogHelper.info("ExcelFileName=" + vo.getExcelFileName() + "\tExcelContentType=" + vo.getExcelContentType() + "\tExcel.AbsolutePath=" + vo.getExcel().getAbsolutePath());
				vo.getAjaxResult().init(StatusCode.error);
			
			if (vo.getExcel()!=null) {
				Date now = new Date();
				String fileName = DateFormatUtils.format(now, Const.TIME_FORMAT_NUMBER);
				int records= this.readExcel(vo.getExcel(), fileName,vo);
				vo.getAjaxResult().init(StatusCode.ok);
				vo.getAjaxResult().setMessage("文件 " + vo.getExcelFileName() + "(" + records + "条订单) 导入成功!");
			}
		}	
		return null;
	}
	
	public int readExcel(File aExcel, String aFile,SalesTmallStoreOrderVo vo) throws TonicareException{
		int number=0;
		
		FileInputStream ins=null;
		try {
			Map<Long,LmProduct> maps=this.getProductsBymap();
			SalesTMallDao dao=(SalesTMallDao) BeanFactory.getDao(Const.DAO_SALES_SALESTMALLDAO);
			
			ins=new FileInputStream(aExcel);
			HSSFWorkbook wb=new HSSFWorkbook(ins);//通过得到的文件流 创建一个HSSFWorkbook对象
			
			HSSFSheet sheet=wb.getSheetAt(0);//第一个工作表
			int rows=sheet.getLastRowNum();
			
			HSSFRow row=null;
			//遍历
			for(int i=1;i<rows;i++){
				row=sheet.getRow(i);				
				String sDate=vo.getStoredate().toString();
				String aId=String.valueOf(this.getCellLong(row, 2));
				String store_status=this.getCellString(row, 7);
				String warehouse=this.getCellString(row, 11);
				
				List<CsStoreDate> store=dao.getCsStoreDateByDateAndID(sDate, aId, store_status, warehouse);
				CsStoreDate storebean=null;
				if(store.size()<=0 ||store==null){
					 storebean=new CsStoreDate();
				}else{
					storebean=store.get(0);
					storebean.setId(store.get(0).getId());
				}	
					storebean.setStoreDate(DateUtils.parseDate(vo.getStoredate(), Const.DEFAULT_DATE_FORMAT_ARRAY));
					storebean.setStoreCode(this.getCellString(row, 0));
					storebean.setStoreName(this.getCellString(row, 1));
					storebean.setProductId(String.valueOf(this.getCellLong(row, 2)));
					storebean.setProductName(this.getCellString(row, 3));
					storebean.setSkuId(this.getCellString(row, 4));			
	 				storebean.setGoodId(this.getCellString(row, 6));
					storebean.setStoreStatus(this.getCellString(row, 7);
					storebean.setLockup((int)this.getCellLong(row, 8));
					storebean.setWarehouse(this.getCellString(row, 11);
					storebean.setStore((int)this.getCellLong(row, 9));
					storebean.setOccupy((int)this.getCellLong(row, 10);
					storebean.setCatId(String.valueOf(this.getCellLong(row, 12)));
					storebean.setCatName(this.getCellString(row, 13));
					storebean.setSupplierCode((int)this.getCellLong(row, 14));
					storebean.setSupplierName(this.getCellString(row, 15));
					storebean.setWaiter(this.getCellString(row, 16));
					storebean.setMca1(this.getCellString(row, 17));
					storebean.setMca2(this.getCellString(row, 18));
					storebean.setMca3(this.getCellString(row, 19));
					storebean.setMcaLast(this.getCellString(row, 20));
					storebean.setCreateTime(new Date());
					
					LmProduct pros=this.dealProduct(storebean,maps);
					if(pros!=null){
						storebean.setDeleted(0);
					}else{
						storebean.setDeleted(1);//删除标志
					}
					dao.saveOrUpdate(storebean);//添加cs_store_date
					number++;
			}
			this.saveProductByMap(maps);//订单中有新品存在 就保存 
			this.saveExcel(aExcel, aFile);//备份excel文件
			
		} catch (Exception e) {
			// TODO: handle exception
			number = 0;
			e.printStackTrace();
			throw new TonicareException();
		}
		return number;
	}
	
	//lmproduct产品表里面有的产品 库存表里面在标记为正常否则为删除商品
	private LmProduct dealProduct(CsStoreDate aOrder, Map<Long,LmProduct> aMap) {
		LmProduct result = null;
		if (aOrder!=null) {
			Long productId = Long.valueOf(aOrder.getProductId().toString());
			result = aMap.get(productId);
			if (result==null) {
				result = new LmProduct();
				result.setId(Long.valueOf(aOrder.getProductId().toString()));
				result.setUpdateTime(new Date());
			}
			result.setName(aOrder.getProductName());
			result.setCode(aOrder.getGoodId());
			aMap.put(productId, result);
		}
		return result;
	}
	
	//将导入的库存的信息里面的新产品添加进产品信息里面  如果是已经存在的产品则更新产品名称和产品条码
	private void saveProductByMap(Map<Long,LmProduct> aMap) {
		if (aMap!=null) {
			SalesTMallDao dao = (SalesTMallDao) BeanFactory.getDao(Const.DAO_SALES_SALESTMALLDAO);
			try {
				Iterator it = aMap.entrySet().iterator();
				while (it.hasNext()) {
					Map.Entry<Long,LmProduct> entry = (Map.Entry<Long,LmProduct>) it.next();
					long key = entry.getKey();
					LmProduct val = entry.getValue();
					
					LmProduct bean = dao.getProductById(key);
					if (bean==null) {
						bean = new LmProduct();
						bean.setId(key);//商品id
						bean.setPlatform(2);//2  代表的是天猫平台
						bean.setDeleted(0);//0 代表在售商品
						bean.setUpdateTime(new Date());
					}
					bean.setName(val.getName());//商品名称
					bean.setCode(val.getCode());//商品条码
					dao.saveOrUpdate(bean);
				}
			}
			catch(Exception ex) {
				ex.printStackTrace();
			}
		}
	}
	
	//得到天猫所有的产品
	private Map<Long,LmProduct> getProductsBymap(){
		Map<Long, LmProduct> map=new HashMap<Long, LmProduct>();
		SalesTMallDao dao=(SalesTMallDao) BeanFactory.getDao(Const.DAO_SALES_SALESTMALLDAO);
		try {
			List<LmProduct> list=dao.getTmallProduct();
			for(LmProduct row:list){
				map.put(row.getId(),row);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return map;
	}
	
	//保存excel文件
	private boolean saveExcel(File aSrc, String aFileName) {
		boolean result = false;
		String path = Config.UPLOAD_PATH + File.separator + "tmall" + File.separator + aFileName + ".xls";
		try {
			File dst = new File(path);
			FileUtils.moveFile(aSrc, dst);
			result = true;
		}catch (Exception e) {
			result = false;
			e.printStackTrace();
		}
		return result;
	}
	
	private String getCellString(HSSFRow aRow, int aIndex) {
		String result = StringUtils.EMPTY;
		if (aRow!=null) {
			HSSFCell cell = aRow.getCell(aIndex);
			if (cell!=null){			
				result = cell.toString();
			}
		}
		return result;
	}
	private long getCellLong(HSSFRow aRow, int aIndex) {
		long result = 0;
		if (aRow!=null) {
			double t = this.getCellDouble(aRow, aIndex);
			result = Math.round(t);
		}
		return result;
	}
	private double getCellDouble(HSSFRow aRow, int aIndex) {
		double result = 0;
		
		if (aRow!=null) {
			HSSFCell cell = aRow.getCell(aIndex);
			if (cell!=null)
				result = cell.getNumericCellValue();
		}
		return result;
	}
	
}

 

 

 

分享到:
评论

相关推荐

    jd_jui下载压缩文件

    jd_jui,专业的java的class文件反编译,可以把war包中文件重新编译成java文件,重新打包

    java反编译jd-jui安装包文件

    1. **下载JD-JUI**:从官方网站或者其他可靠的资源获取jd-jui的安装包,包含的文件如jd-gui.cfg是配置文件,jd-gui.exe是主执行文件,readme.txt则是使用说明。 2. **解压与运行**:将安装包解压缩,找到jd-gui.exe...

    java反编译工具JD-JUI

    Java反编译工具JD-JUI是一款专为Java开发者设计的工具,它允许用户查看和理解Java字节码,将已编译的.class文件转换回可读的.java源代码。这款工具支持Mac和Windows操作系统,因此无论是苹果用户还是Windows用户都能...

    JD-JUI(JAVA反编译MAC版)

    1. **安装**: 首先,你需要下载适用于Mac系统的JD-JUI压缩包,其中包含JD-GUI.app文件。 2. **运行**: 双击JD-GUI.app启动应用,界面会显示一个空的工作区。 3. **加载字节码**: 点击“Open Class File”或“Open ...

    jd-jui jar包代码查看

    标题提到的"jd-jui jar包代码查看"是一个这样的场景,它涉及到使用JD-GUI工具来查看.jar文件中的代码。JD-GUI是一个独立的图形用户界面工具,它能够帮助开发者快速地浏览和分析Java字节码,从而查看到类和方法的源...

    jd-jui(将jar程序换为java程序).rar

    此外,jd-jui还可以直接反编译包含在其他归档文件(如.zip或.tar.gz)中的Java字节码,极大地拓展了其适用范围。 在使用jd-jui时,我们可以观察到反编译过程中的各种细节,例如类结构、方法定义、变量声明等。尽管...

    jui 富文本框架使用

    JUI富文本框架是一款专为前端开发者设计的高效、易用的文本编辑工具。它集成在DWZ(Dynamic Web Zone)框架之中,旨在提供一个轻量级且功能强大的解决方案,帮助开发者快速实现网页内容的编辑和展示。本文将深入探讨...

    jd-jui linux下查看反编译工具

    2. 然后,使用`dx --java --output classes_classes.jar classes.dex`将.dex转换为可以直接被jd-gui读取的Java类文件集合(.jar)。 3. 最后,启动jd-gui,通过菜单栏选择"File" -&gt; "Open File",找到并加载`classes...

    Android反编译工具jd-jui

    最后,使用jd-gui(`jd-jui`的一部分)打开生成的`.jar`文件,即可查看对应的`.class`文件,并进一步反编译为`.java`源代码。 需要注意的是,反编译的结果可能并不完全与原始的Java源代码一致,因为编译器在优化...

    dwz_jui 1.6.1版本

    从压缩包中的`dwz_jui-master`来看,这很可能是框架的源码仓库,包含了所有必要的文件和目录,如CSS样式文件、JavaScript脚本、图片资源、示例页面以及可能的文档。通过解压并查看这些文件,开发者可以深入理解框架...

    Java反编译工具jui

    标题提到的"jui"可能是"Java反编译器"的简称或者是某个特定工具的名称,但在这个上下文中,我们更倾向于将其理解为Java反编译工具的一般讨论。 "jd-gui.cfg"和"jd-gui.exe"这两个文件是Java反编译工具JD-GUI的相关...

    B-JUI 整合MVC3

    1. **引入B-JUI资源**:首先需要将B-JUI的CSS样式文件和JavaScript库添加到项目的公共头部文件中,确保在每个页面都能访问到这些资源。这通常是在布局页面(_Layout.cshtml)中完成的。 2. **创建视图**:在MVC3的...

    JD-jui和FrontEndPlus反编码工具

    特殊情况,只有.class文件,或者自己把源代码弄丢,就需要修改.class文件文件了。有.class文件的反编译工具,可以将.class文件反编译成java源码,修改以后再编译成....可以使用JD-jui和FrontEndPlus反编码工具来实现。

    DWZ-JUI 文档和代码

    **DWZ-JUI** 是一个基于 jQuery 的前端框架,专为构建高效、易用的 Web 应用程序而设计。这个框架集成了丰富的组件和页面布局,提供了完整的前端解决方案,帮助开发者快速搭建企业级的 Web 管理系统。在“DWZ-JUI ...

    B-JUI 前端管理框架

    - **B-JUI**: B-JUI 框架的核心文件夹,包含框架的 JavaScript 和 CSS 文件以及必要的图片和图标。 ### 四、使用与开发流程 1. **下载与引入**:首先从官方仓库获取 B-JUI 的最新版本,将相关文件引入到项目中。 2...

    java反编译工具jd-jui

    在Java开发中,由于源代码通常会被编译成字节码(.class文件),而这些字节码是不可读的,对于开发者来说,了解他人编写的已编译Java程序的内部工作原理或者进行逆向工程时,就需要用到反编译工具。JD-GUI就是这样一...

    roncoocom-roncoo-jui-springboot-master

    roncoocom roncoo-jui springboot master roncoocom roncoo-jui springboot master roncoocom roncoo-jui springboot master

    jui java反编译浏览器

    Java反编译技术是软件开发领域中的一种重要技能,它允许开发者查看已编译的Java类文件(.class文件)的源代码,这对于理解和学习已有的闭源软件、调试问题或者进行逆向工程非常有用。"jui java反编译浏览器"就是这样...

    dwzteam-dwz_jui-master

    【压缩包子文件的文件名称列表】中,"dwzteam-dwz_jui-master.zip"是主压缩文件,可能包含了DWZ UI框架的源代码、样式表、JavaScript文件、示例代码以及其他相关资源。"dwz_jui"可能是解压后的文件夹名称,其中包含...

    基于B-JUI的前端框架设计源码

    B-JUI前端框架:基于JavaScript开发,包含603个文件,包括166个GIF图像文件、150个JavaScript文件、142个HTML文件、69个PNG图像文件、31个CSS样式文件、19个JPG图像文件、4个PHP文件、3个SWF文件、2个EOT字体文件和2...

Global site tag (gtag.js) - Google Analytics