Excel导入基础配置 (已过时,平台5.0专用)
概述
Excel导入主要用于将Excel数据通过IE导入到数据库相关表
用于批量添加,批量修改,批量设置
参数
调用页面Config/SysExcelImport.aspx;
参数:entity:表名,UniqueNo:gridUniqueNo或者mappingId 还有neityName:导入节点的名称默认为entity+gridUniqueNo
示例
- 导入思想:
a. 1)临时表时,和导入的Excel生成一个临时表(#Temp 结构和导入时的Excel的结构相同 同时增加了一个字段 ExcelImportUniqueNo 默认为’’) 2)非临时表时,不用临时表时,数据存储到DynaTempData列数据存储到DynaTempColumn CondtionId为{@XltSessionId
b. 再导入后sql里根据临时表(#temp)去插入到其它的表 (使用临时表时,建议将成功的数据ExcelImportUniqueNo更新为非’’)
c. 在导入后sql里将导入不成功的数据返回 使用临时表时,(select * from #temp where ExcelImportUniqueNo=’’ ) 否则:ErrorDataSource里写返回失败数据
d. 最后把不成功的数据(使用临时表时,去除ExcelImportUniqueNo字段)生成一个excel返回
- ExcelImport根节点:
a. Name属性:调用数据导入读取配置文件的标识名称(默认为业务对应表名+GridUniqueNo)
b. Title属性:导入配置说明
- ConfigInfo子节点:
a. PageTitle属性:网页的标题
b. PageLabel属性: 页面内容的标题
c. TableName属性: 生成的数据库数据表的表名 (以#开头表示使用临时表)
d. FieldTableName属性: 生成的数据库字段表的表名(不使用临时表时有效)
e. StartRow属性: 数据的开始行索引(默认为3)
f. StartCol属性: 非空的数据对应的列索引(默认为5)(用于统计有多少行数据,不能用带有合并的行的列索引)
g. TitleRow属性: 列标题行索引 (默认为2)
h. QueryUniqueNo属性:显示导入条件(在SQL里用{@Query[‘字段’]}可以取得查询条件)
(不要显示的时候QueryUniqueNo=””)
i. SqlTimeOut属性:数据库的超时时间,可以不设置(默认360秒)
j. Keys/Key子节点,取对应Excel的行列显示在页面上
BeforeDataSource子节点:开始导入前的sql
MessageDataSource子节点:自定义失败信息(一行一列)的sql (非临时表时才有有效)
AfterDataSource子节点:开始导入后的sql,临时表时要返回失败数据 非临时表时要用{@XltSessionId}表示当前的conditionId
ErrorDataSource子节点:失败数据对应的sql(非临时表时才有有效)
EndDataSource子节点:最后处理的SQL(非临时表时才有有效)
js事件 xls_CheckFileBefore(fileObj);//验证文件类型 fileObj是文件浏览控件 xls_UploadFileBefore(fileObj)//上传前事件 xls_UploadFileAfter(fileInfo);//上传后事件 fileInfo是文件信息fileInfo.nName文件服务器地址
xls_ImportBefore(fileInfo) //导入前事件 xls_ImportAfter(fileInfo) //导入后事件 xls_ProcResultBefore(xml);// //导入后事件,显示失败信息和Excel相关行列数据前
xls_ProcResultAfter(xml, resultNode);// 显示失败信息和Excel相关行列数据前 后,xml为导入后返回的xml信息,resultNode为xml信息对应的节点
- 调用:
function ExcelImport(name//name为配置文件的唯一标识(必须填写)
,entityName //entityName为配置文件的实体名 (为null时取页面的Entity EntityName参数 都为空取MappingId)
,winStyle //窗口样式 默认 dialogWidth:400px;dialogHeight;300px
,winType//打开方式(showModalDialog:模态默认 open:弹窗)
,urlParas// urlParas为其它url参数(格式p1=a1&p2=a2)
)
具体配置如下:
例-Excel导入(Oracle)(已过时,平台5.0专用)
概述
本例子演示Excel导入Oracle。
导入原理:将Excel导入到DataTable; 然后把列结构数据导入到表:把数据导入到表; 再用AfterDataSource的sql或者存储过程处理,插入到相关表; 再用ErrorDataSource的sql或者存储过程处理,返回失败数据; 最后把失败数据生成到Excel返回。
参数
调用页面:Config/SysExcelImport.aspx
示例
1、toolbar配置:
<!--材料抽查结果 PZC 2010.08.17-->
<ToolBar UniqueNo="11000">
<SysButtons>
<Button RuleName="Append" Name="cmd新建" Text="新建" ToolTip="新建" Type="Normal" Image="WebToolBar/16_create.gif" DisplayMode="TextAndImage" Script="__WebGridAppend()"></Button>
<Button RuleName="Modify" Name="cmd保存" Text="保存" ToolTip="保存" Type="Normal" Image="WebToolBar/16_Save.gif" DisplayMode="TextAndImage" Script="__WebGridSave()"/>
<Button RuleName="Modify" Name="cmd删除" Text="删除" ToolTip="删除" Type="Normal" Image="WebToolBar/16_delete.gif" DisplayMode="TextAndImage" Script="__WebGridDelete()" Target="Grid"></Button>
<Button Target="Grid" Name="cmd导入" Text="导入" ToolTip="导入" Type="Normal" Image="WebToolBar/check in.png" DisplayMode="TextAndImage" Script="Import()"></Button>
</SysButtons>
<Scripts>
<Script>
<![CDATA[
function Import()
{
var TempEntity="PDM_PQS_InspectionMResult";
var TempUniqueNo="11000";
var MappingId= NewAjaxRequest("User_WebService","<TempEntity>"+TempEntity+"</TempEntity><TempUniqueNo>"+TempUniqueNo+"</TempUniqueNo>","GetMapping");
var Url = "Config/SysExcelImport.aspx?Entity=PDM_PQS_InspectionMResult&UniqueNo=11000&Name=PDM_PQS_InspectionMResult11000&Pid="+Request.Pid+"&t="+Math.random();
openDialog(Url,window,"DialogWidth:820px;DialogHeight:290px","上级抽检数据导入");
// window.open("../Config/SysExcelImport.aspx?Entity=PDM_PQS_InspectionMResult&UniqueNo=11000&Name=PDM_PQS_InspectionMResult11000&Pid="+Request.Pid+"");
}
]]>
</Script>
</Scripts>
</ToolBar>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2、ExcelImport导入节点配置:
<Other>
<ExcelImportList>
<ExcelImport Name="PDM_PQS_InspectionMResult11000" Title="数据导入">
<ConfigInfo QueryUniqueNo="" PageTitle="上级抽检excel导入" PageLabel="上级抽检excel导入" MapName="" DataTableName="DynaTempData" FieldTableName="DynaTempColumn"
StartRow="2" StartCol="2" TitleRow="1" SqlTimeOut="">
</ConfigInfo>
<MessageDataSource Type="Oracle">
<![CDATA[
select '成功导入:'||(select count(*) from DynaTempData
left join (select PDM_BMWH_ASSISTMATERIALID,AssistMaterialName,PDM_BMWH_AssistMaterialSpec.AssistMaterialSpecName from PDM_BMWH_ASSISTMATERIAL left join PDM_BMWH_AssistMaterialSpec on PDM_BMWH_ASSISTMATERIAL.AssistMaterialSpecName=PDM_BMWH_AssistMaterialSpec.PDM_BMWH_AssistMaterialSpecId
)b on b.AssistMaterialName=T2 and b.AssistMaterialSpecName=T3
where ConditionId='[@XltSessionId]' and b.PDM_BMWH_ASSISTMATERIALID is not null)||'条'||','||'失败:'||(select count(*) from DynaTempData
left join (select PDM_BMWH_ASSISTMATERIALID,AssistMaterialName,PDM_BMWH_AssistMaterialSpec.AssistMaterialSpecName from PDM_BMWH_ASSISTMATERIAL left join PDM_BMWH_AssistMaterialSpec on PDM_BMWH_ASSISTMATERIAL.AssistMaterialSpecName=PDM_BMWH_AssistMaterialSpec.PDM_BMWH_AssistMaterialSpecId
)b on b.AssistMaterialName=T2 and b.AssistMaterialSpecName=T3
where ConditionId='[@XltSessionId]' and b.PDM_BMWH_ASSISTMATERIALID is null )||'条' from dual
]]>
</MessageDataSource>
<AfterDataSource Type="Oracle">
<![CDATA[
insert into PDM_PQS_InspectionMResult (Createdby,CreatedOn,PDM_PQS_InspectionMResultId,ProductCorporation,PDM_BMWH_ASSISTMATERIALID,SamplePlace,TResult,Unqualified,PDM_PQS_SamplingInspectionId)
select '{@SysUserId}',sysdate,Sys_Guid(),T1,b.PDM_BMWH_ASSISTMATERIALID,T4,(select attributevalue from stringmap where attributeName='JudgeResult' and DisplayText=T5 ),T6,'{@Request['Pid']}' from DynaTempData
left join (select PDM_BMWH_ASSISTMATERIALID,AssistMaterialName,PDM_BMWH_AssistMaterialSpec.AssistMaterialSpecName from PDM_BMWH_ASSISTMATERIAL left join PDM_BMWH_AssistMaterialSpec on PDM_BMWH_ASSISTMATERIAL.AssistMaterialSpecName=PDM_BMWH_AssistMaterialSpec.PDM_BMWH_AssistMaterialSpecId
)b on b.AssistMaterialName=T2 and b.AssistMaterialSpecName=T3
where ConditionId='[@XltSessionId]' and b.PDM_BMWH_ASSISTMATERIALID is not null
]]>
</AfterDataSource>
<ErrorDataSource Type="Oracle">
<![CDATA[
select T1 生产企业,T2 产品名称,T3 规格,T4 抽样地点,T5 判定,T6 不合格指标 from DynaTempData
left join (select PDM_BMWH_ASSISTMATERIALID,AssistMaterialName,PDM_BMWH_AssistMaterialSpec.AssistMaterialSpecName from PDM_BMWH_ASSISTMATERIAL left join PDM_BMWH_AssistMaterialSpec on PDM_BMWH_ASSISTMATERIAL.AssistMaterialSpecName=PDM_BMWH_AssistMaterialSpec.PDM_BMWH_AssistMaterialSpecId
)b on b.AssistMaterialName=T2 and b.AssistMaterialSpecName=T3
where ConditionId='[@XltSessionId]' and b.PDM_BMWH_ASSISTMATERIALID is null
]]>
</ErrorDataSource>
<Scripts>
<Script>
<![CDATA[
window.attachEvent("onload",aa)
function aa()
{
$("xlsC_StartCol").parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display="none"
}
function xls_ImportBefore(fileInfo)
{
var N=0;
var xlsC_TitleRow=$("xlsC_TitleRow").value;
var xlsC_StartRow=$("xlsC_StartRow").value;
var xlsC_StartCol=$("xlsC_StartCol").value;
var fileName=window.xls_FileInfo.nName;
var ColName=NewAjaxRequest("User_TM_WebService","<fileName>"+fileName+"</fileName><sheetName></sheetName><titleRowIndex>"+xlsC_TitleRow+"</titleRowIndex><dataRowIndex>"+xlsC_StartRow+"</dataRowIndex><dataUniqueNoCellIndex>"+xlsC_StartCol+"</dataUniqueNoCellIndex>","CheckExcel");
if(ColName=="0")
{
alert("请导入该业务对应的excel数据!");
return false;
}
else
{
ColName=ColName.split('$%$');
for(var i=0;i<ColName.length;i++)
{
if(ColName[i]=="产品名称")
{
N++
}
}
if(N==0)
{
alert("请导入excel为非卷烟产品的数据!");
return false;
}
else
return true;
}
}
function xls_ImportAfter(fileInfo)
{
window.dialogArguments.__WebGridRefresh();
}
]]>
</Script>
</Scripts>
</ExcelImport>
</ExcelImportList>
</Other>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
3、最终效果:
相关链接
Excel导入基础配置
例-Excel导入(SqlServer)
概述
例-Excel导入(SqlServer)
参数
例-Excel导入(SqlServer)
示例
例-Excel导入(SqlServer)
动态excel导入(已过时,平台5.0专用)
概述
能够灵活、便捷的处理动态列导入业务,无需先导出模板,直接根据用户Excel数据文件进行数据导入。
参数
函数:__ImportExcel()
示例
<Button Target="Grid" Name="cmdExcel导入" Text="Excel导入" ToolTip="Excel导入" Type="Normal" Image="WebToolBar/16_Excel.gif" DisplayMode="TextAndImage" Script="__ImportExcel()" />
2
3