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