EAS BOS 从Excel导入数据

1、制作导入模板

package com.kingdee.eas.ts.common.utils;

import java.util.Map;

import com.kingdee.bos.ctrl.kdf.table.IRow;
import com.kingdee.bos.ctrl.kdf.table.KDTable;
import com.kingdee.bos.dao.IObjectCollection;
import com.kingdee.bos.dao.IObjectValue;
import com.kingdee.eas.ec.common.client.IExcelImpProcess;
import com.kingdee.eas.framework.client.CoreUI;

/**
 * 自定义导入模板
 * 实现com.kingdee.eas.ec.common.client.IExcelImpProcess接口
 */
public class CustomExcelImpProcess implements IExcelImpProcess {

	private CoreUI owner; //传入的界面
	private String strFullName; //Excel路径
	private String sheetName; //工作表名称
	private KDTable table; //表格
	
	public CustomExcelImpProcess(CoreUI owner, String strFullName, String sheetName, KDTable table){
		this.owner = owner;
		this.strFullName = strFullName;
		this.sheetName = sheetName;
		this.table = table;
	}
	
	/**
	 * 读取Excel每行数据
	 */
	@Override
	public void addRow(Object[] objArr) throws Exception {
		if(objArr == null || objArr.length == 0) return;
		IRow row = table.addRow();
		
		Object obj = null;
		String key = null;
		
		for(int i = 0; i<objArr.length; i++){
			obj = objArr[i];
			key = getColumnKeys()[i];
			
			if("number".equals(key)){
				String number = (String) obj;
				//...
				//...
			}
			
			if("qty".equals(key)){
				//...
				//...
			}
		}
		
		//从ObjArr读取每个字段数据set到row里面对应的单元格
		//...
		//...
	}

	/**
	 * 返回列数据类型
	 * public static int TYPE_NUMBER = 0; //数字型
	 * public static int TYPE_BOOLEAN = 1; //布尔型
	 * public static int TYPE_DATE = 2; //日期型
	 * public static int TYPE_STRING = 3; //字符型
	 */
	@Override
	public int[] getColumnTypes() {
		return new int[]{3, 3, 3, 0, 0, 0, 2, 1, 3};
	}

	/**
	 * 返回列命名
	 */
	@Override
	public String[] getColumnKeys() {
		return new String[]{"number", "name", "model", "qty", "price", "amt", "intoDate", "isIncludeTax", "remark"};
	}

	/**
	 * 返回列别名
	 */
	@Override
	public String[] getColumnNames() {
		return new String[]{"物料编码", "物料名称", "规格型号", "数量", "单价", "金额", "入库日期", "是否含税", "说明"};
	}

	@Override
	public CoreUI getOwner() {
		return this.owner;
	}

	/**
	 * 工作表名称
	 * 不返回或返回的值找不到都默认读取第一个工作表
	 */
	@Override
	public String getSteetName() {
		return this.sheetName;
	}

	/**
	 * Excel文件路径
	 * 必须返回
	 */
	@Override
	public String getStrFullName() {
		return this.strFullName;
	}

	@Override
	public boolean isOverRide() {
		return false;
	}
	
	@Override
	public Map createValueMap(IObjectValue paramIObjectValue) {
		return null;
	}

	@Override
	public Map createValueMap(IObjectCollection paramIObjectCollection) {
		return null;
	}
	
	@Override
	public IObjectCollection getIObjectCollection() {
		return null;
	}

	@Override
	public String getIObjectKey(IObjectValue paramIObjectValue) {
		return null;
	}
}

2、在界面上添加导入按钮并添加事件

protected void actionImportExcel_actionPerformed(ActionEvent e) throws Exception{
		String strFullPath = EcFileUtil.getSelectFile(this, false, "xls");
		if (strFullPath != null) {
			IExcelImpProcess process = new CustomExcelImpProcess(this, strFullPath, "物料", this.kdtEntry);
			ExcelUtil.impDataToExcel(process);
		}
	}

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值