|
主题:[分享]CMS V9.5.131008 表单批量导入xls数据问题修复方法 [收藏主题] |
由于工作需要,必须定期从XLS表格导入一些数据到自定义表单里. 而从使用9.05版开始到测试9.5.131008版,一直都无法导入XLS表格(XLS文件里有多个表,导入其他新建表),输入正确文件名和表名(如文件:/2013-10.xls 表:Sheet15),然后就到“配置导入项”界面,但下方只有一行。 右边的下拉菜单第一个是此项不导入,后边是表里的各个字段名。但无法导入。 经过分析是源码读取XLS时判断逻辑有问题,导致好像只能读入XLS文件里第一个表数据,而且是你输入的表名必须是XLS文件里最早的表名才可以,否则就出现读取错误(如上的情况)。 经过修改已经解决此问题,可以正常导入。 只要XLS文档表名不是纯数字,一般纯英文、英文+数字格式都可以(必须开头为英文,数字开头的不行)。 虽然不是最完美的解决方式,但至少一般情况是够用了。 修改方法:Admin\KS.Form.asp文件: 搜索:Sub ShowField(fieldname) 9.05版好像是1700行左右,9.5.131008版1811行左右 然后选择这行到 End Sub 这行,替换以下代码段: 不大会用这个论坛的编辑系统,请复制下面的代码,是正常的格式: Sub ShowField(fieldname) if request("tablename")="" then response.write "<script>alert('表名称必须输入!');history.back();</script>" response.end end if dim dbname:dbname=request("tablename") & "$" dim rs:Set rs=Iconn.OpenSchema(4) Do Until rs.EOF or rs("Table_name") = trim(dbname) rs.MoveNext if rs.EOF then exit do end if Loop if rs.EOF then response.write "<script>alert('未能找到指定的表,请检查表名是否有错!');history.back();</script>" rs.close:set rs=nothing Set IConn = Nothing response.end end if response.write "<b>rs(Table_name)="&rs("Table_name")&" trim(dbname)="&trim(dbname)&"</b>" Do Until rs.EOF or rs("Table_name") <> trim(dbname) if rs("Table_name") = trim(dbname) then if fieldname=trim(rs("column_name")) then response.write "<option value='"&rs("column_Name")&"' selected>·"&rs("column_Name")&"</option>" else response.write "<option value='"&rs("column_Name")&"'>·"&rs("column_Name")&"</option>" end if end if rs.MoveNext if rs.EOF then exit do end if loop rs.close:set rs=nothing End Sub 很怀疑官方是否测试过这个功能,好像9.0之前都有这个问题,到现在都没修复。 亲,再给力点吧。 |
|
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
<上一主题 | 下一主题 > |