账号通
    

账号  

密码  

1778

查看

1

回复
主题:[分享]CMS V9.5.131008 表单批量导入xls数据问题修复方法 [收藏主题]  
binsee 当前离线

3

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:14 分
登录次数:5 次
注册时间:2013/8/26
最后登录:2013/12/27
binsee 发表于:2013/10/15 10:07:32   | 只看该作者 查看该作者主题 楼主 
由于工作需要,必须定期从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 这行,替换以下代码段:
quot;
不大会用这个论坛的编辑系统,请复制下面的代码,是正常的格式:


    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) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2013/10/15 15:41:39   | 只看该作者 查看该作者主题 沙发 
科汛在线网校系统
我们会进一步测试,感谢提供!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.08594秒 powered by KesionCMS 9.0