您的位置:首页 > 其它

导入excel数据,导出数据到excel

2015-08-15 16:28 281 查看
package com.jiemai.test;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.write.Label;

import com.jiemai.supplier.dto.TimItem;

import com.jiemai.supplier.logic.ItemLogic;

import com.jmapp.oms.request.impl.CreateItemReq;

import com.jmapp.oms.response.DefaultResponse;

import com.jmapp.oms.vo.req.CreateItemVO;

import com.syndb.util.CurrencyUtil;

public class CreateItemTest {

public static void main(String[] args) {

ItemLogic logic = new ItemLogic();

// TODO Auto-generated method stub

//读取excel数据

jxl.Workbook rwb = null;

try{

//构建Workbook对象, 只读Workbook对象

//直接从本地文件创建Workbook

//从输入流创建Workbook

InputStream is = new FileInputStream("E:/4px-item.xls");

rwb = Workbook.getWorkbook(is);

//Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中

//Sheet的下标是从0开始

//获取第一张Sheet表

Sheet sheet = rwb.getSheet(0);

//获取Sheet表中所包含的总列数

int rsColumns = sheet.getColumns();

System.out.println("rsColumns="+rsColumns);

//获取Sheet表中所包含的总行数

int rsRows = sheet.getRows();

//封装excel里的数据成产品对象集合

List<CreateItemVO> createItemVOs = new ArrayList<CreateItemVO>();

//获取指定单元格的对象引用

for(int i=0;i<rsRows;i++){

Cell[] cells = sheet.getRow(i);

CreateItemVO createItemVO = new CreateItemVO();

for(int j=0;j<rsColumns;j++){

//第一列是sku

createItemVO.setSku(cells[0].getContents());

}

//把封装好的createItemVO对象添加到createItemVOs集合里

createItemVOs.add(createItemVO);

}

//根据sku查询TimItem封装成TimItem集合

List<TimItem> timItems = new ArrayList<TimItem>();

for(CreateItemVO createItem : createItemVOs) {

TimItem timItem = new TimItem();

//根据sku查询数据库里对应的数据

timItem = logic.queryBySku(createItem.getSku());

//把查询的TimItem对象加入 到timItems 集合里

timItems.add(timItem);

}

//post失败的对象封装起来

List<CreateItemVO> tempItemVOs = new ArrayList<CreateItemVO>();

for(TimItem item: timItems) {

//把从数据库查询到的集合对象TimItem迭代出来设置到CreateItemVO对象里

CreateItemVO supItem = new CreateItemVO();

if(item!=null) {

supItem.setSku(item.getImBarcode());

supItem.setItemName(item.getImName());

supItem.setCategoryCode(item.getIgId().toString());

supItem.setUnits("EA");

supItem.setUnitPrice(String.valueOf(CurrencyUtil.rmb2usd(Double.parseDouble(item.getImClass1()))));

supItem.setWeight(String.valueOf(item.getImGrossweight()));

supItem.setHeight(String.valueOf(item.getImHeight()));

supItem.setWidth(String.valueOf(item.getImWidth()));

supItem.setLength(String.valueOf(item.getImLength()));

supItem.setDeclare(item.getImDeclaredescription());

supItem.setDescription("");

supItem.setReferenceCode("");

supItem.setSpecification("");

//tempItemVOs.add(supItem);

}

//数据封装好之后再post到指定url

DefaultResponse resp = new CreateItemReq().post(supItem,DefaultResponse.class);

List<Map<String, Object>> list=resp.getData();

System.out.println(resp.getData().toString());

Map<String, Object> map=list.get(0);

System.out.println(map.get("ack"));

if(map.get("ack")=="N") {

tempItemVOs.add(supItem);

}

}

//导入post失败的对象到excel

int i = 0;

jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("E:/5px-item.xls"));

//读取第一张工作表

jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1",0);

for(CreateItemVO createItemVO : tempItemVOs) {

//第一个参数代表列,第二个参数代表行,第三个参数代表内容

Label label = new Label(0, i, createItemVO.getSku());

ws.addCell(label);

i++;

}

//往excel写入数据

wwb.write();

wwb.close();

}catch(Exception e){

e.printStackTrace();

}

finally{

//操作完成时,关闭对象,释放占用的内存空间

rwb.close();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: