今天在做一个excle数据导入的时候遇到了一个奇葩问题,项目使用的是MVC,在VS2010里面调试的时候没有问题,可是当发布到本地IIS或服务器上时就出现了问题:

1、excel文件正在被使用;

2、没有安装Microsoft.Jet.OLEDB.4.0。

后来找公司的前辈帮忙,发现这个Bug其实很好解决。

问题1的产生原因是打开的链接忘记关闭了,所以才会导致这个错误提示。

问题2的产生原因可能是因为32位和64位的原因,因为我的机子64位的,IIS的应用池没有允许【启用32位应用程序】,所以最后导致了这个问题。

最后,po段c#导入excel数据的代码:

public string ImportData()
{
if (Request.Files.Count > && Request.Files[].ContentLength > )
  {
  HttpPostedFileBase file = Request.Files[];
string path = AppDomain.CurrentDomain.BaseDirectory + "Content\\Upload\\ItOperation";
string fileName = Path.GetFileNameWithoutExtension(file.FileName);
string extension = Path.GetExtension(file.FileName);
string newFileName = CurrentEmpCode + extension;//以当前时间命名另一份文件
if (file.ContentLength > )//不能超过4m
{
  status = "'status:failed'";
name = "'name':'上传文件大小不能超过4M'";
ret = "{'error':1,'msg':'上传文件不能超过4M!'}";
}
else
{
  string otherFilePath = Path.Combine(path, newFileName);
file.SaveAs(otherFilePath);
DataTable dtSheetName = new ExcelHelper().GetSheetNames(otherFilePath);
if (dtSheetName != null && dtSheetName.Rows.Count > )
{
   string sheetName = dtSheetName.Rows[]["TABLE_NAME"].ToString();
if (sheetName != "")
{
   DataTable dt = LoadExcelDataToTable(otherFilePath, sheetName, extension);
   if (dt != null && dt.Rows.Count > )
{
             //...你的逻辑
}
}
}
}
}
} public DataTable LoadExcelDataToTable(string path, string sheetName, string fileType)
{
  string strConn = "";
  if (fileType == ".xlsx")
  {
    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";" + "Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
}
else if (fileType == ".xls")
{
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + "Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
}
OleDbConnection conn = new OleDbConnection(strConn);
DataTable dt = new DataTable();
try
{
  conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;    strExcel = "select * from [" + sheetName + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(dt);
}
catch
{
  dt = null;
}
finally
{
  conn.Close();
}
  return dt;
}

C#导入Excel数据常见问题的更多相关文章

  1. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  2. PLSQL Developer导入Excel数据

    LSQL Developer导入Excel数据 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Exc ...

  3. 导入excel数据

    前提条件:先要安装好EXCEL软件. 程序中经常要用到导入excel数据的功能.其实通过ole操作excel就简单的几行代码,但记性不好,经常要用经常要找, 还是作篇笔记吧. var ExcelApp ...

  4. (转)PLSQL Developer导入Excel数据

    场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有 ...

  5. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

  6. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  7. 【转】 如何导入excel数据到数据库,并解决导入时间格式问题

    在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...

  8. Oracle导入excel数据快速方法

    Oracle导入excel数据快速方法 使用PLSQL  Developer工具,这个可是大名鼎鼎的Oracle  DBA最常使用的工具.    在单个文件不大的情况下(少于100000行),并且目的 ...

  9. thinkphp整合系列之phpexcel导入excel数据

    一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...

随机推荐

  1. nginx 域名(虚拟)部署nodejs项目

    首先说下我的情况,Windows+mongodb开发的简单nodejs 小博客系统, 配置部署到centos7 nginx下,mongodb还是在我Windows机器下, 1.Linux安装node. ...

  2. oracle 提示没有监听

    # listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora # Generated by Or ...

  3. .net写本地文件的一个方法

    整理代码,.net在本地写html文件的一个方法,代码如下 public static void WriteFile(string FilePath, string FileInfo, string ...

  4. kbmmw 的HTTPSmartService入门

    前面介绍过kbmmw 中的smartservice. 这个既可以用于kbmmw 的客户端,也可以使用http 访问. 在新版的kbmmw里面,作者加强了http 的支持,我们可以只使用HTTPSmar ...

  5. ios label的一些设置

    一.根据文本长度设置label的宽高和字体大小 NSString *str = @"天将降大任于斯人也,必先苦其心志.天将降大任于斯人也,必先苦其心志.";      CGRect ...

  6. vue 开发系列(二) vue ajax 拦截

    概要说明 在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登录状态才能访问数据,当没有登录的情况,这个时候我们需要跳转到登录界面进行登录. 如果每次请 ...

  7. express框架搭建服务端

    1.管理员权限全局安装express npm i -g express-generator@4 2.创建express项目 express -e projectName 3.进入项目并安装 cd pr ...

  8. 引用限定符(c++11)

    1.概念 1)下面这种情况将对一个右值调用成员函数.对右值赋值 string s1 = "abc", s2 = "def"; auto n = (s1 + s2 ...

  9. dj 中间件

    中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到 ...

  10. 队列<一>

    这里用的递归法,采用两种版本,一种是C语言,一种是C++:但是,用C语言没有“引用”,所以采用的是指向指针的指针:而C++具备“引用”,所以直接用&引用,简洁: 先看C++的代码: BiTre ...