Excel数据导入,实现列表清单式excel数据的导入,更新。支持的功能有:


需要了解的限制有:


需要了解的功能术语有:

操作入口

在"定制"-"Excel数据导入"模块下。

Excel导入模板

创建/管理excel中每个sheet页的导入规则,用于多次导入规则相同的excel数据。一个excel文件对应一个excel导入模板,excel文件中的sheet页对应模板中的一个导入规则。

值域范围

可选值列表的定义,用于验证excel中某一列的数据必须在指定的可选值列表内,目前仅支持字符串类型

异常数据日志管理

查看导入异常日志,并可以导出导入异常的数据、及异常原因。
入口:在系统运维,单击 异常数据日志管理
出现在异常数据日志中的前置条件:Excel导入模板中需要设置"异常处理规则"为"继续执行"。

演示数据准备

  1. 在demo库中的northwind执行附件中的"测试表及数据.sql",这个脚本导入两张表:xxxgxzdw(学校相关行政单位)和dim_xxmc(学校名称维表)。导入成功后进入smartbi,将新增的表加入到数据源管理中("管理""系统管理""数据源""northwind""DEFAULT"-"同步schema")。
  2. 演示要导入的excel数据"表1-3学校相关行政单位.xls "

新建Excel导入模板

下面以新建一个"演示带参数的导入模板"为例,详细说明每一项的配置。该示例实现为每个学校导入、更新行政单位及其负责人。Excel数据:

      
目标表结构:
      
其中学校代码,需要根据用户选择的值导入,实现如下:

  1. 点击新建Excel导入模板
  2. 进入Excel导入模板编辑界面,点击"添加导入规则"

     

  1. 进入规则编辑界面

     

    

     

    
支持的验证规则:字符长度限制、值域范围验证、数字范围验证、正则表达式验证(譬如某一列必须满足邮件的规则,就可以使用正则表达式验证)

      

  1. 保存模板

点击"保存",弹出"保存Excel导入模板"对话框,输入名称及描述,点"确认"保存模板。
      

执行导入Excel数据

双击Excel导入模板(或者右键 - 打开)进入导入excel数据界面,如"演示带参数的导入模板",进入导入界面:
      

       
这个模板执行界面可以通过openresource的方式集成到其他系统,
如:http://localhost:8080/smartbi/vision/openresource.jsp?resid=I402881e7422f475c0146c3e43ec8035e&user=admin&password=manager

新建值域范围

下面以新建"单位职能列表"为例,详细说明每一项的配置。

  1. 点击新建值域范围,选择数据远northwind
  2. 进入值域范围范围编辑界面

       

     

      

  1. 点击保存,保存值域范围

异常日志数据管理

查看导入异常日志,并可以导出导入异常的数据、及异常原因。
入口:在系统运维,单击 异常数据日志管理
出现在异常数据日志中的前置条件:Excel导入模板中需要设置"异常处理规则"为"继续执行"。

应用示例

演示带参数的导入模板

请见"新建Excel导入模板"

演示静态列表值域范围

值域范围的新建和下拉框参数的新建非常相像,但比下拉框参数更简单。
请见"新建值域范围"

演示带值域范围验证的导入模板

该示例实现为每个学校导入、更新行政单位及其负责人。Excel数据:

目标表结构:

其中学校代码,需要根据用户选择的值导入,单位职能只有:学生管理、教学管理、质量监控、其他四个可选值。实现步骤如下:

  1. 新建"单位职能列表"值域范围,详见"演示静态列表值域范围"
  2. 点击新建Excel导入模板,添加导入规则

  1. 点击列设置,设置列映射

  1. 点击"单位职能"那一行的校验设置,设置值域范围校验,点击确定。

  1. 点击保存,弹出保存对话框,输入名称"演示带值域范围验证的导入模板",保存excel导入模板
  2. 双击"演示带值域范围验证的导入模板"执行导入,选择文件"表1-3学校相关行政单位 - 值域范围验证.xls"验证值域范围校验

  1. 下载异常数据


然后点击右下角的保存,就会显示成

上传模板后,关闭模板,点击"异常数据日志管理",可以看到刚导入的异常数据

点击"下载异常"图标,下载异常数据

演示绑定自定义java类的导入模板

该示例实现为每个学校导入、更新行政单位及其负责人。Excel数据:

目标表结构:

其中学校代码,需要根据用户选择的值导入,唯一id需要根据学校代码和单位号组合而成,实现步骤如下:

  1. 新建扩展包"DataImporterDemo",extension.xml中设置depends="DataImporter"

  1. 新建行政单位ID类"smartbi.demo.XZDWID"

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

  1. 新建Module类"smartbi.demo.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());
}
}

  1. 加入DataImporterDemo扩展包,重新启动smartbi服务器
  2. 点击新建Excel导入模板,添加导入规则

  1. 点击列设置,设置列映射


其中的"唯一id"选择绑定JAVA类,并选择"学校行政单位id"

  1. 点击保存,弹出保存对话框,输入名称"演示绑定自定义java类的导入模板",保存excel导入模板
  2. 双击该模板执行导入,选择"表1-3学校相关行政单位.xls"


到数据库中看结果

扩展接口说明

请见"Excel数据导入_类文档注释"。

 

原始文档:http://pan.baidu.com/s/1miIn4SS