|
楼主 |
发表于 2019-1-27 15:36:37
|
显示全部楼层
如图 我现在的需求是
1.我点击选择的时候弹出选择excel的窗口,然点击上传的时候才执行上传操作,然后后台获取这些参数并且解析Excel,自己解析并且插入数据库
现在的做法
//初始化事件 绑定excel弹窗,配置等
Model.prototype.modelLoad = function(event){
var self = this;
excel = this.comp("importExcel1");
excel.getConfigDlg = function() {
var cfg = excel._cfg;
cfg.useDefault = true;
cfg.mapping = "/UI2/assessManage/anFang/process/anFangUpload/anFang.mapping.xml";
};
// 初始化uploader, 赋值。
excel.showConfigDlg = function() {
var dlg = excel.getConfigDlg();
};
excel._createUploader(self.getElementByXid("button2"));
excel.uploader.on('onFileSelected', this._doFileSelected, this);
};
点击上传执行的是平台的放法{"operation":"importExcel1.importExcel"}
然后配置文件是
<?xml version="1.0" encoding="UTF-8"?>
<mapping>
<default-config>
<sheet all="false" start="1" end="1"/>
<row-number all="false" start="2" />
</default-config>
<concept name="MK_T_STATION_DAY">
</concept>
</mapping>
但是在执行上传前事件获取不了workBook ,空指针异常
public static void test() {
System.out.println("=======================");
ActionContext actionContext = ModelUtils.getRequestContext().getActionContext();
Workbook workBook = (Workbook) actionContext.getParameter("excel");
Sheet sheet = workBook.getSheetAt(0);
for (int i = 0; i <= sheet.getLastRowNum(); i++) { // 对行进行循环
org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);
Cell cell = row.getCell(1);
// 根据每行第二列的值判断是否导入这行数据 import.mapping.xml里对应的为relation
// name="FINTEGER" cell-number="2" check="true"/>
// 注意:check="true" 必须加在要删除列所对应的relation上
// check:
// excel中行数据是否有效判断,当check="true"时cell-number对应列值为空,认为此行数据无效将被忽略
if (cell.getNumericCellValue() > 100) { // 如果值大于100 对应这行的值就不导入
row.removeCell(cell);
}
}
}
|
-
-
|