- 浏览: 284872 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
SpringJava:
摘过来的
小心使用ArrayList和LinkedList -
jingjing0907:
我要成为第一个赞的人!呵呵,
小心使用ArrayList和LinkedList -
SpringJava:
cilendeng 写道应该用ConcurrentHashMa ...
实现单用户登陆session先进先出(session踢出) -
lingxiajiudu:
不错,完美解决我了的问题,赞一个。
子窗体给父窗体传值 javascript opener -
cilendeng:
应该用ConcurrentHashMap
实现单用户登陆session先进先出(session踢出)
=========================1 files========================
package com.teckwah.logistics.dms.dao;
import java.util.Date;
import jxl.Cell;
import jxl.Sheet;
import com.teckwah.logistics.util.ActionMessageException;
import com.teckwah.logistics.util.Converter;
public abstract class PriceBookInfo {
private String projectCode;
/**
* @param projectCode
*/
public PriceBookInfo(String projectCode) {
this.projectCode = projectCode;
}
protected abstract Boolean isEOF(Sheet sheet,int row);
protected String getCellStringValue(Sheet sheet,int col,int row){
Cell cell = null;
try{
cell=sheet.getCell(col,row);
}
catch (Exception e){
}
String result = null;
if(cell!=null){
result = cell.getContents();
if (result!=null&&!"".equals(result.trim())){
result = result.trim();
}
}
return result;
}
protected Double getCellDoubleValue(Sheet sheet,int col,int row){
Double result=0.0;
String value = getCellStringValue(sheet,col,row);
if (value!=null && !value.equals("")){
try{
result=Double.valueOf(value);
}
catch(Exception e){
e.printStackTrace();
}
}else{
throw new ActionMessageException("TheValueNotAllowEmpty:"+(row+1)+":line,"+(col+1)+":column in file");
}
return result;
}
protected Long getCellLongValue(Sheet sheet,int col,int row){
Long result=0L;
String value = getCellStringValue(sheet,col,row);
if (value!=null && !value.equals("")){
try{
result=Long.valueOf(value);
}
catch(Exception e){
e.printStackTrace();
}
}else{
throw new ActionMessageException("TheValueNotAllowEmpty:"+(row+1)+":line,"+(col+1)+":column in file");
}
return result;
}
protected Date getCellDateValue(Sheet sheet,int col,int row){
Date result=null;
String value = getCellStringValue(sheet,col,row);
if (value!=null && !value.equals("")){
try{
result=Converter.convertStringToDateTimeByUS(value);
}
catch(Exception e){
e.printStackTrace();
}
}else{
throw new ActionMessageException("TheValueNotAllowEmpty:"+(row+1)+":line,"+(col+1)+":column in file");
}
return result;
}
protected Boolean getCellBooleanValue(Sheet sheet,int col,int row){
Boolean result=false;
String value = getCellStringValue(sheet,col,row);
if (value!=null && !value.trim().equals("") &&
(value.trim().equalsIgnoreCase("yes") ||
value.trim().equalsIgnoreCase("true") ||
value.trim().equalsIgnoreCase("1"))){
result =true;
}
return result;
}
/**
* @return projectCode
*/
public String getProjectCode() {
return projectCode;
}
/**
* @param projectCode 要设置的 projectCode
*/
public void setProjectCode(String projectCode) {
this.projectCode = projectCode;
}
}
=========================2 files========================
/**
* @author Linian
*/
package com.teckwah.logistics.dms.dao;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import com.teckwah.logistics.dms.dao.impl.PriceBookCodeDAO;
import com.teckwah.logistics.dms.dao.impl.PriceBookDAO;
import com.teckwah.logistics.domain.ItemMaster;
import com.teckwah.logistics.domain.ItemMasterId;
import com.teckwah.logistics.domain.PriceBook;
import com.teckwah.logistics.domain.PriceBookCode;
import com.teckwah.logistics.domain.PriceBookCodeId;
import com.teckwah.logistics.mim.dao.impl.ItemMasterDAO;
import com.teckwah.logistics.util.ActionMessageException;
import com.teckwah.logistics.util.Converter;
import com.teckwah.logistics.util.GlobUtil;
import com.teckwah.logistics.util.PropertiesUtil;
/**
* @author Linian
*
*/
public class UploadPriceBookInfo extends PriceBookInfo {
private final int startColumn = 0;
private final int firstRow = 0;
private final int startRow = 1;
private final static String SHEETNAME = "PriceBook Details Info";
private String projectCode;
private String timeZone;
public static String datePatternByUS="yyyy-MM-dd HH:mm:ss";
private ItemMasterDAO itemMasterDao;
private PriceBookDAO priceBookDao;
private PriceBookCodeDAO priceBookCodeDao;
private HashSet<String> set;
private jxl.write.DateFormat dateFormat;
private jxl.write.WritableCellFormat cellFormat;
private Map<String, PriceBookCode> priceBookCodeMap;
public UploadPriceBookInfo(String projectCode, String timeZone, ItemMasterDAO itemMasterDao, PriceBookDAO priceBookDao, PriceBookCodeDAO priceBookCodeDao) {
super(projectCode);
this.projectCode = projectCode;
this.timeZone = timeZone;
this.itemMasterDao = itemMasterDao;
this.priceBookDao = priceBookDao;
this.priceBookCodeDao = priceBookCodeDao;
this.set = new HashSet<String>();
this.dateFormat = new jxl.write.DateFormat(datePatternByUS);
this.cellFormat = new jxl.write.WritableCellFormat(dateFormat);
this.priceBookCodeMap = new HashMap<String, PriceBookCode>();
}
/* (非 Javadoc)
* @see com.teckwah.logistics.dms.dao.PriceBookInfo#isEOF(jxl.Sheet, int)
*/
@Override
protected Boolean isEOF(Sheet sheet, int row) {
Boolean result=true;
if(sheet!=null){
String value=getCellStringValue(sheet,startColumn,row+startRow);
result = value ==null || value.trim().equals("");
}
return result;
}
private String isValid(String itemNo){
if(itemNo==null||"".equals(itemNo.trim()))
throw new ActionMessageException("err.ItemNoIsNull");
if(!set.contains(itemNo)){
ItemMasterId id = new ItemMasterId(projectCode, itemNo);
ItemMaster itemMaster = itemMasterDao.findById(id);
if(itemMaster==null||itemMaster.getId().getItemNo()==null||"".equals(itemMaster.getId().getItemNo().trim())){
set.clear();
throw new ActionMessageException("err.ItemNoNotExist");
}else
set.add(itemNo);
}
return itemNo;
}
private PriceBookCode initPriceBookCode(PriceBookCode code, PriceBookCodeId id){
String key = id.getProjectCode()+id.getPriceBook();
if(!priceBookCodeMap.containsKey(key)){
code = priceBookCodeDao.getPriceBookCodeBy(projectCode, id.getPriceBook());
if(code!=null){
code.getId().setOrigin(id.getOrigin());
priceBookCodeMap.put(key, code);
}else{
throw new ActionMessageException("err.PriceBookNotExist");
}
}else{
code = priceBookCodeMap.get(key);
}
return code;
}
private Long isValid(Long origin){
boolean result = true;
if(origin!=null){
for(PropertiesUtil.Origin e : PropertiesUtil.Origin.values()){
if(e.ordinal()==origin.intValue()){
result = false;
break;
}
}
}else{
throw new ActionMessageException("err.OriginIsNull");
}
if(result){
throw new ActionMessageException("err.OriginIsValid");
}
return origin;
}
private Date isValid(Date date){
if(date==null)
throw new ActionMessageException("err.DateNotAllowEmpty");
return date;
}
private String isEmpty(String str){
if(str!=null && !"".equals(str.trim()))
return str.trim();
else
throw new ActionMessageException("err.TheValueNotAllowEmpty");
}
private Boolean getBooleanValue(Boolean data){
if(data==null)
data = false;
return data;
}
private Double isValid(Double data){
if(data==null||data<=0D)
throw new ActionMessageException("qtyOrPriceLessThanZero");
return data;
}
private void initPriceBook(PriceBook obj, Sheet st, int row){
PriceBookCodeId codeId = new PriceBookCodeId();
codeId.setProjectCode(projectCode);
codeId.setOrigin(isValid(getCellLongValue(st, startColumn, row+startRow)));
codeId.setPriceBook(isEmpty(getCellStringValue(st, startColumn+1, row+startRow)));
PriceBookCode code = new PriceBookCode();
obj.setPriceBookCode(initPriceBookCode(code, codeId));
obj.setItem(isValid(getCellStringValue(st, startColumn+2, row+startRow)));
obj.setCurrency(isEmpty(getCellStringValue(st, startColumn+3, row+startRow)));
obj.setMinQty(isValid(getCellDoubleValue(st, startColumn+4, row+startRow)));
obj.setQtyUnit(isEmpty(getCellStringValue(st, startColumn+5, row+startRow)));
obj.setEffectiveDate(Converter.convertToGmtDate(timeZone, isValid(getCellDateValue(st, startColumn+6, row+startRow))));
obj.setExpiredDate(Converter.convertToGmtDate(timeZone, isValid(getCellDateValue(st, startColumn+7, row+startRow))));
obj.setPrice(isValid(getCellDoubleValue(st, startColumn+8, row+startRow)));
obj.setForQuotation(getBooleanValue(getCellBooleanValue(st, startColumn+9, row+startRow)));
obj.setIsDefaultBook(getBooleanValue(getCellBooleanValue(st, startColumn+10, row+startRow)));
obj.setEntryDate(Converter.convertToGmtDate(timeZone, isValid(getCellDateValue(st, startColumn+11, row+startRow))));
obj.setRemark(isEmpty(getCellStringValue(st, startColumn+12, row+startRow)));
}
private void doPriceBook(Workbook workbook){
if(workbook!=null){
PriceBook obj;
Sheet st = workbook.getSheet(0); /// the first sheet...
if(st!=null){
for(int i=0; i<st.getRows(); i++){
if(isEOF(st, i)) break;
obj = new PriceBook();
initPriceBook(obj, st, i);
if(obj!=null)
priceBookDao.attachDirty(obj);
}
}
}
}
public void doGenPriceBookInfo(Workbook workbook){
doPriceBook(workbook);
}
private void writeToSheet(WritableSheet sheet, List<PriceBook> list){
if(list!=null&&list.size()>0){
PriceBook obj;
for(int i=0; i<list.size(); i++){
obj = list.get(i);
try {
sheet.addCell(new Label(startColumn, i+startRow, obj.getPriceBookCode().getId().getOrigin().toString()));
sheet.addCell(new Label(startColumn+1, i+startRow, obj.getPriceBookCode().getId().getPriceBook()));
sheet.addCell(new Label(startColumn+2, i+startRow, obj.getItem()));
sheet.addCell(new Label(startColumn+3, i+startRow, obj.getCurrency()));
sheet.addCell(new jxl.write.Number(startColumn+4, i+startRow, obj.getMinQty()));
sheet.addCell(new Label(startColumn+5, i+startRow, obj.getQtyUnit()));
sheet.addCell(new jxl.write.DateTime(startColumn+6, i+startRow, Converter.convertToLocalDateEx(timeZone, obj.getEffectiveDate()), cellFormat));
sheet.addCell(new jxl.write.DateTime(startColumn+7, i+startRow, Converter.convertToLocalDateEx(timeZone, obj.getExpiredDate()), cellFormat));
sheet.addCell(new jxl.write.Number(startColumn+8, i+startRow, obj.getPrice()));
sheet.addCell(new jxl.write.Boolean(startColumn+9, i+startRow, obj.getForQuotation()));
sheet.addCell(new jxl.write.Boolean(startColumn+10, i+startRow, obj.getIsDefaultBook()));
sheet.addCell(new jxl.write.DateTime(startColumn+11, i+startRow, Converter.convertToLocalDateEx(timeZone, obj.getEntryDate()), cellFormat));
sheet.addCell(new Label(startColumn+12, i+startRow, obj.getRemark()));
sheet.addCell(new jxl.write.Number (startColumn+13, i+startRow, obj.getPriceBookId()));
sheet.addCell(new Label(startColumn+14, i+startRow, obj.getPriceBookCode().getId().getProjectCode()));
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
}
private void genDownLoadPriceBookInfo(String realPath, List<PriceBook> list){
try {
WritableWorkbook book = Workbook.createWorkbook(new File(realPath));
WritableSheet sheet = book.createSheet(SHEETNAME, 0);
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD,
false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.GREEN);
jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat(wfc);
format.setAlignment(jxl.format.Alignment.JUSTIFY);
format.setBackground(jxl.format.Colour.GRAY_25);
for(int i=0; i<=14; i++)sheet.setColumnView(i, 18);
sheet.addCell(new Label(startColumn, firstRow, "ORIGIN", format));
sheet.addCell(new Label(startColumn+1, firstRow, "PRICEBOOK", format));
sheet.addCell(new Label(startColumn+2, firstRow, "ITEMNO", format));
sheet.addCell(new Label(startColumn+3, firstRow, "CURRENCY", format));
sheet.addCell(new Label(startColumn+4, firstRow, "MINQTY", format));
sheet.addCell(new Label(startColumn+5, firstRow, "QTYUNIT", format));
sheet.addCell(new Label(startColumn+6, firstRow, "EFFECTIVEDATE", format));
sheet.addCell(new Label(startColumn+7, firstRow, "EXPIREDDATE", format));
sheet.addCell(new Label(startColumn+8, firstRow, "PRICE", format));
sheet.addCell(new Label(startColumn+9, firstRow, "FORQUOTATION", format));
sheet.addCell(new Label(startColumn+10, firstRow, "ISDEFAULTBOOK", format));
sheet.addCell(new Label(startColumn+11, firstRow, "ENTRYDATE", format));
sheet.addCell(new Label(startColumn+12, firstRow, "REMARK", format));
sheet.addCell(new Label(startColumn+13, firstRow, "PRICEBOOKID", format));
sheet.addCell(new Label(startColumn+14, firstRow, "PROJECTCODE", format));
writeToSheet(sheet, list);
book.write();
book.close();
} catch (IOException e) {
e.printStackTrace();
} catch (RowsExceededException ee) {
ee.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
public String downloadPriceBookInfo(List<PriceBook> list){
String path = "/secure/printReport/";
String fileName = projectCode + "_" + (new Date()).getTime()+ ".xls";
String slash = GlobUtil.getSlash();
String realPath = GlobUtil.getRealPath("secure"+slash+"printReport" + slash +fileName);
genDownLoadPriceBookInfo(realPath, list);
return path+fileName;
}
/**
* @param itemMasterDao 要设置的 itemMasterDao
*/
public void setItemMasterDao(ItemMasterDAO itemMasterDao) {
this.itemMasterDao = itemMasterDao;
}
/**
* @return priceBookDao
*/
public PriceBookDAO getPriceBookDao() {
return priceBookDao;
}
/**
* @return set
*/
public HashSet<String> getSet() {
return set;
}
/**
* @return projectCode
*/
public String getProjectCode() {
return projectCode;
}
/**
* @return dateFormat
*/
public jxl.write.DateFormat getDateFormat() {
return dateFormat;
}
/**
* @return cellFormat
*/
public jxl.write.WritableCellFormat getCellFormat() {
return cellFormat;
}
/**
* @return priceBookCodeMap
*/
public Map<String, PriceBookCode> getPriceBookCodeMap() {
return priceBookCodeMap;
}
/**
* @return priceBookCodeDao
*/
public PriceBookCodeDAO getPriceBookCodeDao() {
return priceBookCodeDao;
}
/**
* @return timeZone
*/
public String getTimeZone() {
return timeZone;
}
}
发表评论
-
栈的简单应用--单词反转
2014-07-03 16:00 655我们知道栈是一种先进后出,也就是后进先出的数据 ... -
java实现简单的栈
2014-07-01 11:56 602栈--只允许访问第一个数据项即:最后插入的数据。最简单的一句 ... -
小心使用ArrayList和LinkedList
2014-06-30 16:32 755ArrayList内部是使用可増长数组实现的,所以是用ge ... -
有趣的Java算法(3)
2014-06-30 16:29 648给定两个排序后的数组A和B,其中A的末端有足够的空间容纳B ... -
有趣的Java算法(2)
2014-06-30 16:29 1031今天分享一个"将一个整数的每位数分解并按逆序输 ... -
有趣的Java算法
2014-06-20 17:00 716题目及源码分析: /* * 今天在BBS里面看到这 ... -
java 值传递 引用传递
2010-12-17 23:11 2036java方法用的是值传递还是引用传递。你在blogjava上还 ... -
用java代码编写堆栈
2010-05-03 17:39 1202public class Stack { int[] ... -
几种读取属性文件的JAVA实现方式
2010-04-30 19:20 1147转载:http://darkranger.iteye.com/ ... -
Site
2010-04-30 19:20 930http://www.szikao.com/computer/ ... -
JAVA对XML的几种解析方式
2010-04-29 19:53 931对于XML介绍比较全面的还是IBM的专栏: ... -
集合与通用集合
2010-04-29 19:44 1398URL: http://www.ibm.com/develop ... -
HashMap 和TreeMap
2010-04-29 19:41 1236本文重点介绍HashMap。首先介绍一下什么是Map。在数组中 ... -
TreeMap和HashMap的问题
2010-04-29 19:39 2064在一次面试的过程 ... -
实现单用户登陆session先进先出(session踢出)
2010-04-29 19:33 9427首先在系统增加sessionListener 来监听sessi ... -
Java单态模式的实现
2010-04-29 19:23 15451.饿汉式:public class Sing ... -
请教java反射机制里可以调用私有方法吗?
2010-04-27 19:17 1593如题:请教java反射机制里可以调用私有方法吗? Metho ... -
利用java反射机制调用类的私有方法
2010-04-27 18:59 13871.将getInstance()方法设置为private ... -
String是原始数据类型还是引用数据类型
2010-04-26 19:22 1680请教各位高手,String是原始数据类型还是引用数据类型?谢谢 ... -
java中堆(heap)和堆栈(stack)有什么区别
2010-04-26 19:13 2159stack 和 heap 都是内存的 ...
相关推荐
java操作excel读写,可以根据自己的需要灵活修改。导入导出excel
Java 操作Excel poi读写excel,所需要的jar包 https://blog.csdn.net/u014646662/article/details/83217382
java excel 读写 java excel 导入数据库 部分来自网络,现整理供同行们使用
jxl的excel读写操作 java操作excel的读写。
java读写excel文件,新手参考高手绕道。
java poi excel操作demo 支持xls和xlsx两个格式的excel文件的读写操作。读取模式包含用户模式和事件驱动模式 ,事件驱动模式能够支持大数据量的读操作,写操作xlsx使用sxssf方式支持大数据量的写入操作。 demo 基于...
Java实现Excel读写的poi 5.2.1版本jar
包含java对excel读写和工作表读写,完整的java代码和需要的jar文件
java 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写excel
ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容
Java读写文件-Excel
Java Excel读写组件jxl使用 例如导出ofice文件
java插件,组件 读写Excel文件java插件,组件 读写Excel文件
java读写excel的操作文档,其中包括读取、新建以及拷贝修改EXCEL文件。只需要jxl.jar包,我已经上传,同样是0分下载的
含java读写excel所需的jar包,含有读写示例程序
在Java中读写Excel文件 ! 仅供参考
java jxl Excel 读写 合并单元格 下载 等实例
一种基于Java注解和反射机制的Excel文件读写操作方法
java处理2003和2007Excel读写加密源码,有需要的可以参考代码,根据自己需求改造
java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel