引言

    最近公司项目全部转向前端化,故所有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操作

最新文章

  1. 【原】为什么选择iPhone5的分辨率作为H5视觉稿尺寸
  2. poj 1266 Cover an Arc.
  3. Sql--列操作
  4. BZOJ 3832: [Poi2014]Rally
  5. Something wrong with FTK's index search results
  6. java给图片加水印代码
  7. PHP的PSR-0命名标准
  8. javascript 备忘录
  9. Ext Js详解指南
  10. (转载)java 枚举 循环遍历以及一些简单常见的使用
  11. Python内置函数(27)——range
  12. 学习TensorFlow,打印输出tensor的值
  13. Nginx限流配置
  14. pycharm的安装和使用小技巧
  15. 关于vivado implement后clock interaction报告的理解(更新中)
  16. leetcode958二叉树的完全检验-java
  17. 通过js去掉所有的html标签,得到HTML标签中的所有内容
  18. redis主从配置<转>
  19. python 中dir()和__dict__的区别
  20. mysqld_safe与mysqld区别详解

热门文章

  1. Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)
  2. EFCore学习记录--数据访问技术人门
  3. Leetcode(22)-括号生成
  4. JVM终结篇
  5. Linux错误记录贴
  6. 前端 Web 异常监控系统 All In One
  7. js location API All In One
  8. free HTTPS for website! & SSL & TLS & HTTP/2 & SPDY
  9. vue-parent-child-lifecycle-order
  10. VIM 官方教程