转载:https://www.cnblogs.com/cang12138/p/5606130.html

上面的博友已经讲的很清楚了,但是我们在服务端是获取不到前端上传文件的绝对路径的(因为新浏览器有安全机制限制问题),也就是指定不了本地文件,所以我们一般把文件上传到服务器,再获取Excel里面的内容,这样我们可以防止导入出错时候方便查找,并且有一个备份,一般处理完后我们再选择是否把服务器的文件给删除掉

1.使用客户端控件实现上传(记住不是服务器控件)

上传代码如下,不懂可以参考https://www.cnblogs.com/cang12138/p/5606130.html

HTML代码如下(easyui的file控件好像不行,有兴趣的小伙伴可以尝试一下):

<div id="Execl">
<form id="form" action="../Handlers/AttendanceManagerHandler.ashx" method="post" enctype="multipart/form-data">
<input type="file" id="file1" name="file" onchange="fileOnchange()" />
<input id="selSheesName" name="selSheesName">
<a id="btnUpload" href="#" class="easyui-linkbutton" onclick="Upload()">导入</a>
</form>
</div>

jquery代码如下:

function fileOnchange() {
var formData = new FormData($('#form')[0]);
$.ajax({
type: 'post',
url: "../Handlers/AttendanceManagerHandler.ashx?funType=getsheetsname",
data: formData,
cache: false,
processData: false,//不处理数据
contentType: false,//不设置内容类型
dataType:"json",
}).success(function (response) {
//这个是easyui前端控件赋值方法
$('#selSheesName').combobox("loadData", response);
}).error(function () {
alert("下拉框获取失败!!!");
});
}
FormData解释参考这里https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects
ajax的参数问题参考http://www.w3school.com.cn/jquery/ajax_ajax.asp 一般处理程序代码如下:
//获取前端传输过来的文件
HttpFileCollection files = HttpContext.Current.Request.Files;
//获取文件的访问权
HttpPostedFile posted = files[];
//获取服务器路径
string TempPath = System.IO.Path.GetTempPath();
//拼接成服务器的绝对路径
string filePath = TempPath + files[].FileName;
//上传文件到服务器
posted.SaveAs(filePath);

这里面关键是要获取文件控件的访问权问题,只有这样才能上传文件

至于后面的导入,参考https://www.cnblogs.com/cang12138/p/5606130.html

2.使用服务器控件完成Excel的导入

  (1)上传文件

  (2)创建连接   connStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;\"",filePath);这个连接串,全部支持,不需要判断扩展名是.xls  .xlsx

  (3)读取excel里面的内容

3.把数据导入到excel中,一般是我们读取我们的数据集,并把读取的数据给服务器上excel文件,再用a标签的href指向服务器地址,让客户点击标签另存到本地(代码:https://www.cnblogs.com/cang12138/p/5606130.html)

第三方插件的导入导出,以后有需求再说吧  未完待续。。。

最新文章

  1. 剑指Offer 数组中只出现一次的数字
  2. SQLite -- 分页查询
  3. CSS属性选择符
  4. ASP.NET: 正在中止线程 错误原及解决方法
  5. SQLServer数据库中创建临时表
  6. oracle数据库迁移---windows环境下
  7. C# PDF添加水印
  8. protobuf 作为配置文件
  9. Android系统简介(上):历史渊源
  10. HTML5下通过response header解决跨域AJAX cookie的问题
  11. Java简单购物车设计
  12. [.NET | 發佈] 如何指定固定的目錄給程式調用的外部DLL?
  13. uva1587 Box
  14. iframe父子页面互调方法和属性
  15. atlas
  16. 使用Android Studio导入第三方库项目
  17. 解决Android编译时出现aapt.exe finished with non-zero exit value 1
  18. Docker(1):CentOS7 安装Docker
  19. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :
  20. 逐帧动画 两种实现方式 css和js

热门文章

  1. Windows 命令提示符
  2. JDBC中如何进行事务处理?
  3. html打开子窗口
  4. Inno Setup Conpiler 使用方法
  5. Delphi 获取系统的语言环境参数GetSystemDefaultLangID、VerLanguageName、GetLocaleInfo
  6. JMeter 阶梯式加压测试插件 Stepping Thread Group
  7. BZOJ 4619: [Wf2016]Swap Space(贪心)
  8. AcWing 217. 绿豆蛙的归宿 (概率期望+拓扑排序)打卡
  9. Nginx + Tomcat 配置负载均衡集群简单实例
  10. Java第四次作业,面向对象高级特性(继承和多态)