- 浏览: 289799 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 695我们知道栈是一种先进后出,也就是后进先出的数据 ... -
java实现简单的栈
2014-07-01 11:56 643栈--只允许访问第一个数据项即:最后插入的数据。最简单的一句 ... -
小心使用ArrayList和LinkedList
2014-06-30 16:32 785ArrayList内部是使用可増长数组实现的,所以是用ge ... -
有趣的Java算法(3)
2014-06-30 16:29 681给定两个排序后的数组A和B,其中A的末端有足够的空间容纳B ... -
有趣的Java算法(2)
2014-06-30 16:29 1057今天分享一个"将一个整数的每位数分解并按逆序输 ... -
有趣的Java算法
2014-06-20 17:00 747题目及源码分析: /* * 今天在BBS里面看到这 ... -
java 值传递 引用传递
2010-12-17 23:11 2065java方法用的是值传递还是引用传递。你在blogjava上还 ... -
用java代码编写堆栈
2010-05-03 17:39 1233public class Stack { int[] ... -
几种读取属性文件的JAVA实现方式
2010-04-30 19:20 1178转载:http://darkranger.iteye.com/ ... -
Site
2010-04-30 19:20 966http://www.szikao.com/computer/ ... -
JAVA对XML的几种解析方式
2010-04-29 19:53 957对于XML介绍比较全面的还是IBM的专栏: ... -
集合与通用集合
2010-04-29 19:44 1430URL: http://www.ibm.com/develop ... -
HashMap 和TreeMap
2010-04-29 19:41 1276本文重点介绍HashMap。首先介绍一下什么是Map。在数组中 ... -
TreeMap和HashMap的问题
2010-04-29 19:39 2090在一次面试的过程 ... -
实现单用户登陆session先进先出(session踢出)
2010-04-29 19:33 9478首先在系统增加sessionListener 来监听sessi ... -
Java单态模式的实现
2010-04-29 19:23 15801.饿汉式:public class Sing ... -
请教java反射机制里可以调用私有方法吗?
2010-04-27 19:17 1626如题:请教java反射机制里可以调用私有方法吗? Metho ... -
利用java反射机制调用类的私有方法
2010-04-27 18:59 14181.将getInstance()方法设置为private ... -
String是原始数据类型还是引用数据类型
2010-04-26 19:22 1711请教各位高手,String是原始数据类型还是引用数据类型?谢谢 ... -
java中堆(heap)和堆栈(stack)有什么区别
2010-04-26 19:13 2195stack 和 heap 都是内存的 ...
相关推荐
java操作excel读写,可以根据自己的需要灵活修改。导入导出excel
以上就是关于"Java Excel 读写"和"Java Excel 导入数据库"的关键知识点,涵盖了从文件读写到数据库操作的整个过程,希望对你的开发工作有所帮助。在实际应用中,根据项目需求选择合适的库,合理设计数据处理逻辑,...
java poi excel操作demo 支持xls和xlsx两个格式的excel文件的读写操作。读取模式包含用户模式和事件驱动模式 ,事件驱动模式能够支持大数据量的读操作,写操作xlsx使用sxssf方式支持大数据量的写入操作。 demo 基于...
在Java编程中,读写Excel文件是一项常见的任务,特别是在数据处理、数据分析或报表生成的场景下。本篇文章将深入探讨如何使用Java进行Excel文件的读取与写入操作,主要聚焦于Apache POI库,这是一个广泛使用的开源...
Java操作Excel读写的POI包是Apache软件基金会开发的一个开源项目,主要用来处理Microsoft Office格式的文件,尤其是Excel。在给定的文件列表中,我们看到了三个关键的库文件:`poi-3.9-20121203.jar`、`poi-ooxml-...
这篇博客文章可能详细介绍了如何使用Java POI进行Excel的读写操作。 在Java开发中,使用POI库可以实现以下功能: 1. **创建Excel工作簿**:通过`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,...
java 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写excel
在编程领域,为了实现对Excel文件的自动化处理,我们通常会利用特定的库或API来执行读写操作。本篇将详细介绍如何进行Excel的读写操作,并探讨相关的编程知识点。 1. **库的选择**: - 对于Python,我们可以使用`...
它将XML文档映射到Java对象,使得POI可以方便地操作Excel文件中的元素。 `poi-ooxml-5.2.1.jar`:此文件包含了处理OOXML文件格式的完整功能,与lite版本相比,它提供了更全面的API和功能。 `poi-scratchpad-5.2.1....
Java读写文件-Excel
Java Excel读写组件jxl使用 例如导出ofice文件
Java中的JXL库是一个广泛使用的库,用于读取和写入Microsoft Excel文件。...以上就是JXL库在Java中进行Excel读写操作的基本知识。通过理解和应用这些概念,你可以有效地在Java应用程序中处理Excel数据。
Java提供了多种库来支持对Excel的读写操作,使得开发者能够方便地进行Excel文件的处理。本篇文章将深入探讨Java对Excel的操作。 首先,我们最常使用的Java库是Apache POI。Apache POI是一个开源项目,它提供了API来...
综上所述,Java中的Excel读写组件为开发者提供了灵活且强大的工具,通过选择合适的库并遵循最佳实践,可以高效地处理Excel文件。在实际开发中,可以根据项目的具体需求和资源限制来选择Apache POI、JExcelAPI或其他...
在Excel读写操作中,我们可以通过反射获取带有`@ExcelColumn`注解的字段,并根据其对应的列名来读取或写入Excel数据。 下面是一个简化的流程概述: 1. 定义一个实体类,其中的字段使用`@ExcelColumn`注解,指定...
2. **Java中的Excel操作**:Java本身并不内置对Excel文件的直接支持,但可以通过第三方库如JXL(Java Excel API)来实现读写Excel文件的功能。JXL是一个开源的Java库,它提供了方便的API,使得开发者可以轻松地操作...
总的来说,Java开发者可以通过Apache POI和JExcelAPI轻松地读写Excel文件,进行各种操作,如设置列宽、处理合并或拆分的单元格。理解并熟练掌握这些库,将极大地提升你在处理Excel数据时的效率。在实际项目中,根据...
2. Apache POI:一个Java库,用于读写Excel文件。 3. iText:一个Java库,用于生成PDF文件。 Java生成Excel图表的常用方法: 1. 使用ChartFactory创建JFreeChart对象。 2. 使用DefaultPieDataset创建饼状图数据集...
本研究提出了一种改进型的Excel文件读写操作方法,该方法通过Java注解和反射机制,实现了业务逻辑与文件操作的分离,使得应用程序能够更灵活地处理Excel文件数据。 4. 松耦合编程思想:在软件工程中,松耦合是一种...