创建Excel导入模版,在进行“列设置”时我们会遇到这样的问题,数据表中某个字段无法简单地绑定到Excel的某列上,而应该绑定到多个列经过计算后的结果上。
这时我们就需要自定义一个Java类,然后在“绑定输入”下拉框中选择自定义的Java类了。创建Excel导入模板,在进行“列设置”时我们会遇到这样的问题,数据表中某个字段无法简单地绑定到Excel的某列上,而应该绑定到多个列经过计算后的结果上。
这时我们就需要自定义一个Java类,然后在“绑定输入”下拉框中选择自定义的Java类了。
如果有类似需求,可以参考下面的示例。
示例说明
该示例实现为每个学校导入、更新行政单位及其负责人。Excel数据如下:
...
其中 学校代码,需要根据用户选择的值导入,唯一id 需要根据 学校代码 和 单位号 组合而成。
实现步骤
1、参考“插件开发框架”,新建扩展包“DataImporterDemo”,①需要在extension”,新建扩展包“DataImporterDemo”;
①需要在extension.xml中设置depends="DataImporter",或者将本扩展包的加载优先级设置的低一些。
...
2、在扩展包中,新建一Java类:“smartbi.demo.XZDWID”,行政单位ID类。完整的代码如下。XZDWID”,行政单位ID类。完整的代码如下:
代码块 | ||||
---|---|---|---|---|
| ||||
package smartbi.demo; import smartbi.daq.Excelimport.ICellDataGenerator; import smartbi.daq.Excelimport.ImportFileConfig; import smartbi.daq.Excelimport.RowData; import smartbi.net.sf.json.JSONObject; import smartbi.util.StringUtil; public class XZDWID implements ICellDataGenerator { @Override public String getCellValue(JSONObject colConfig, RowData rowData, ImportFileConfig config) { String xxdm = rowData.getCell("C_XXDM", true); // 学校代码 String dwh = rowData.getCell("C_DWH"); // 单位号 if (!StringUtil.isNullOrEmpty(xxdm) && !StringUtil.isNullOrEmpty(dwh)) { return xxdm + "_" + dwh; } return null; } } |
3、在扩展包中,新建Module类:“smartbi.demo.DAQDemoModule”,注册自定义JAVA类,名为“学校行政单位id”。完整的代码如下。DAQDemoModule”,注册自定义JAVA类,名为“学校行政单位id”。完整的代码如下:
代码块 | ||||
---|---|---|---|---|
| ||||
package smartbi.demo; import smartbi.daq.DataAcquisitionModule; import smartbi.framework.IModule; public class DAQDemoModule implements IModule { private static DAQDemoModule instance = new DAQDemoModule(); /** * @return DataAcquisitionModule * */ public static DAQDemoModule getInstance() { return instance; } @Override public void activate() { DataAcquisitionModule.getInstance().registerExcelCellDataGenerator("学校行政单位id", "学校行政单位id", new XZDWID()); } } |
...