VFPBS上传EXCEL并保存MSSQL到数据库中

开发环境
后端:VFP SP2 7423 +祺佑三层开发框架(猫框)
前端:VUE2.0+Element

思路

  1. 实现BS上传
  2. 就是利用猫框的importexcel类将EXCEL文件转换为临时表,
  3. 将临时表插入到DAL_CA中实现一键保存。

1. 首先来看一下MSSQL数据结构

2. 代码生成器生成DAL_CA类

3. 将生成的DAL_CA类保存到开发框架的DAL目录中

类名同文件名

4. 编写业务逻辑controller类

Define Class ctl_skin_ht as session
*--上传导入文件
	Procedure upfile
		oResult=GetUpFile()		 &&返回为集合对象
		*--原文件名
		cOldFilename=oResult.ofieldcoll.Item("file").filename  &&文件名 跟上传name(微信)对应 key (mui) 对应

		cExtName=Justext(cOldFilename)  &&扩展名
        IF !INLIST(UPPER(cExtName),"XLS","XLSX")
          ERROR "必须上传EXCEL文件"
        ENDIF 
		cFilename=Ttoc(Datetime(),1)+Right(Transform(Second()*1000),6)
		cFilename=cFilename+"."+cExtname


		cMydata=oResult.ofieldcoll.Item("file").fielddata &&文件内容

		cFilePath=getwwwrootpath("upfile")
		If !Directory(cFilePath)
			Md &cFilePath  &&目前只在调试服务器下执行成功,发布时要预先创建
		Endif

		If Strtofile(cMydata,cFilePath+cFilename)<=0
			Error "写入文件失败,目录是否存在且可读写"
		Endif
        *--导入EXCEL生成临时表
		xx=Newobject("importexcel","importexcel.prg")
		xx.cursorstruc="手机型号 c(240),编号 c(50)"
		xx.Alias="tmpxxx"
		
		If !xx.Import(Sys(5)+Sys(2003)+"\"+cFilePath+cFilename)
			Error xx.msg
		Endif
		*-- 临时表写入DAL类,实现一键保存
		oDAL=Newobject("Dal_skin","Dal_skin.prg")
		oDAL.Nodata=.T.
		If !oDAL.CursorFill(.T.)
			Aerror(laerror)
			Error laerror(2)
		Endif

		cTmpAlias=oDAL.Alias
		Insert Into &cTmpAlias(model,skincode,mainmodel,types,Type,Memo,price) Select * From tmpxxx

		If !oDAL.Save()
			Error oDal.msg
		Endif

		Return cursortojson(oDAL.alias)
	Endproc
ENDDEFINE 

5. 前端页面,也可以自己写上传的页面

放下一个上传组件

<el-upload         
         :on-success="handle_success"
          class="upload-demo"
          :action="upurl"            
          multiple
          :limit="1"
          >
          <el-button size="small" type="primary">点击上传</el-button>
          <div slot="tip" class="el-upload__tip">只能上传excel文件</div>
</el-upload>

JS代码

export default {
  components: {},
  data() {
    return {
     upurl:"ctl_skin_ht.fsp?proc=upfile"
    },
  methods: {
     handle_success(res){
       console.log(res);
       if(res.errno!=0){
         this.$message.warning(res.errmsg);         
         return; 
       }
       this.$message.warning("上传成功");   
      },
  }
}

运行调试服务器,测试上传,完美成功。但是发布到IIS却出现了:

下篇继续填坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫的VFP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值