zoukankan      html  css  js  c++  java
  • Ext.Net一般处理程序上传文件

      引言

        最近公司项目全部转向前端化,故所有aspx页面业务逻辑尽可能的转到用户控件前台页面完成。以方便每次发布项目时只是替换前端页面不会影响客户体验。

    既然转到前台逻辑,那么必须走后台的业务也就单独封装了一个公共一般处理程序,用CMD命令方式生成DLL。项目引用该DLL,每次有更新后台方法生成新的DLL替换原有的,避免影响线上客户。

      有了这些需求铺垫,现在故针对Excel导入或者导出做了后台处理方案。

    前台js获取ext:FileUploadField控件选中值上传提交至服务器一般处理程序:

    var file = App.FileUploadID.getEl().down('input[type=file]').dom.files[0];
                     if (file == undefined) {
                         Alert("请选择Excel文件!");
                     } else {
                         var reader = new FileReader();
                         reader.onload = (function (theFile) {
                             return function (e) {
                                 $.ajax({
                                     type: "post",
                                     url: "/CommonMethodHandler.ashx",
                                     data: "Type=1&reader=" + encodeURIComponent(e.target.result),
                                     success: function (result) {
                                         Alert(result);
                                     }
                                 });
                             };
                         })(file);
                         reader.readAsDataURL(file);
                     }

    js相关涉及到的知识点不做过多解释,如有疑问,自行百度了解。

    后台C#代码:

    public void TestRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string Type = context.Request.Params["Type"];
                string result = "";
                switch (Type)
                {
                    case "1":
                        result = TestExcelImport(context);
                        context.Response.Write(result);
                        break;
                }
            }
    
    public string TestExcelImport(HttpContext context)
            {
                try
                {
                    string str = context.Request["reader"];
                    var reader = str.Split(',')[1];
                    byte[] bytes = Convert.FromBase64String(reader);
                    if (bytes == null)
                    {
                        return "请选择Excel文件";
                    }
                    else
                    {
                        DataTable dataTable = new DataTable();
                        using (MemoryStream memoryStream = new MemoryStream(bytes))
                        {
                            dataTable = ExcelDll.TranslateToTable(memoryStream, 0);//封装DLL,请自行百度内存流转dataTable
                            dataTable.TableName = "TestTempData";
                            using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(xEncrypt.DecryptText('连接字符串'), SqlBulkCopyOptions.UseInternalTransaction))
                            {
                                try
                                {
                                    sqlbulkcopy.DestinationTableName = "TestTempData";
                                    sqlbulkcopy.WriteToServer(dataTable);
                                }
                                catch (System.Exception ex)
                                {
                                    throw ex;
                                }
                            }
                        }
                        return "导入成功";
                    }
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }

    导入就实现了,导出请参考另外文章《使用Aspose插件对Excel操作

  • 相关阅读:
    hibernate注解note
    hibernate的批量删除
    hibernate实现多表联合查询
    hibernate联合主键注解方式
    jsp之radio取值与赋值
    @Transient注解的使用
    工程师如何在工作中提升自己?(公众号)
    HTML中让表单input等文本框为只读不可编辑的方法
    ajax, jQuery, jQueryeasyUI
    关于easyui的问答(来自百度问答)
  • 原文地址:https://www.cnblogs.com/Tangcy/p/6878487.html
Copyright © 2011-2022 走看看