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

本文介绍了一种使用Java从Excel文件中读取数据的方法,并将数据转换为对象集合进行进一步处理。具体步骤包括创建Workbook对象来读取Excel文件、获取工作表中的行和列信息、读取单元格内容并封装为对象,最后根据这些对象执行特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
            }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值