如果想支持 .xls,.xlsx 两种格式 则必须安装一个exe文件,下载路径https://www.microsoft.com/zh-CN/download/details.aspx?id=13255   下载好安装就支持.xls,.xlsx 两种格式转换成datatable了,

附代码

public ActionResult file(string inputName)
{
try
{

HttpFileCollectionBase ss = Request.Files;
HttpPostedFileBase file = ss.Get(inputName);
if (file == null)
{
return Json(new
{
success = "没有选择文件"
});
}
string IsXls = System.IO.Path.GetExtension(file.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名 
if (IsXls != ".xls" && IsXls != ".xlsx")
{

return Json(new
{
success = "只可以选择.xls,.xlsx的文件"
});
}
if (!Directory.Exists(Server.MapPath("~/excel/")))
{
Directory.CreateDirectory(Server.MapPath("~/excel/"));
}
FileInfo fil = new FileInfo(file.FileName);
string filename = fil.Name;
/* string filename = file.FileName; */ //获取Execle文件名 DateTime日期函数 
string savePath = Server.MapPath("~/excel/" + filename);//Server.MapPath 获得虚拟服务器相对路径 
file.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上 
DataTable dt12 = fnexcle(savePath);
//DataSet ds = ExcelSqlConnection(savePath, filename); 
//DataTable dt = ds.Tables[0]; //定义一个DataRow数组 
int rowsnum = dt12.Rows.Count;
if (rowsnum == 0)
{
return Json(new
{
success = "表格为空!!!"
});
}
else
{

//存入数据库
ceshiclass.fnexcle(Session[Miscells.userID].ToString(), Session[Miscells.userName].ToString(), dt12);
}
return Json(new { success = "" });
}
catch (Exception ex)
{
return Json(new { success = ex.Message });
}

}

public DataTable fnexcle(string savePath)
{
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + savePath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
DataSet myDataSet = new DataSet();
OleDbConnection conn = new OleDbConnection(strConn);
try
{
conn.Open();
//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等  
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
//包含excel中表名的字符串数组 
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
}
OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable();
//从指定的表明查询数据,可先把所有表明列出来供用户选择 
string strExcel = "select * from[" + strTableNames[0] + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
//myCommand.Fill(dt); 
myCommand.Fill(myDataSet, "ExcelInfo");
//Data.Deleted();
DataTable table = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();
conn.Close();
return table;
}
catch (Exception ex)
{
conn.Close();
throw ex;

//return null;
}

}

Excel转datatable的更多相关文章

  1. .net读取Excel转datatable、.net读取的Excel存在合并单元格并且转成datatable

    项目中经常会遇到Excel导入数据,Excel的模板会可能是存在合并单元格的,模板如下图所示 读取时需要填充合并单元格的值,转成datatable单元格值时,填充合并单元格的值,如下图所示: 合并单元 ...

  2. C# Excel To DataTable

    原地址忘了 需引用NPOI,引用方法:项目引用那儿右键 => 管理NuGet程序包 => 游览 =>输入NPOI =>选中NPOI后安装(一般是第一个) /// <sum ...

  3. excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)

    将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...

  4. 使用NPOI读取Excel到DataTable

    一.NPOI介绍: 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office ...

  5. NPOI操作Excel导入DataTable中

    using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Data; using System.IO; using NPOI.X ...

  6. C#读取Excel,DataTable取值为空的解决办法

    连接字符串这么些就行了 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + opnFileName ...

  7. Excel和datatable相互操作

    /// <summary> /// Excel文档 /// </summary> /// <param name="table"></pa ...

  8. NPOI 读取excel到DataTable 读取隐藏列 读取公式列

    处理思路: 1.打开excel 用NPOI进行读取: 2.读取第一个Sheet: 读取过程中: a.先设置相应列 不隐藏 b.读取Cell时 先判断是否的包含公式 相应代码如下: public sta ...

  9. Excel操作--使用NPOI导入导出Excel为DataTable

    1.ExcelHelper封装 namespace NPOI操作Excel { public class ExcelHelper { /// <summary> /// DataTable ...

  10. NPOI json转Excel DataTable转Excel ,Excel转DataTable

    JsonToExcel: public static void JsonToExcel(List<Dictionary<string, object>> json, strin ...

随机推荐

  1. Intellij IDEA创建git,maven的SpringMVC项目

    Intellij IDEA创建git,maven的SpringMVC项目 原文链接:http://www.cnblogs.com/blog5277/p/8906120.html 原文作者:博客园--曲 ...

  2. 新建vue项目中遇到的报错信息

    在npm install的时候会报错,经过上网查阅资料之后,解决方法如下: 0.先升级npm版本:npm install -g npm   有可能是npm版本过低报错 1.然后清理缓存: npm ca ...

  3. gulp点滴

    var gulp = require('gulp'), connect = require('gulp-connect'), browserify = require('gulp-browserify ...

  4. HBase Region 各个状态的转换

    Region 各个状态的转换 HBase 维护了每个 region 的一个状态信息,并保存在 hbase:meta 中.hbase:meta 本身region的状态信息被持久化到 ZooKeeper. ...

  5. day048 BOM和DOM

    BOM   Browser Object Model(文档对象模型) > window对象 1.alert     弹出带有提示和一个确认按钮的警示框 2.confirm       弹出带有一 ...

  6. 微信小程序textarea组件在fixed定位中随页面滚动

    如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true https://developers.weixin.qq.com/miniprogr ...

  7. 学了3天EOS, 其它没学会,就学会了发私人数字币

    关于 EOS的 铸币及发币(以下是精华)                                                                    张永@CoinXP 以下 ...

  8. 3D打印GCODE文件学习(一)

    我家有一个天威的入门级的3D打印机.它有一个配套的软件叫“Rrint-RiteCoLiDo Repetier-Host V1.5.5”,用来连接.控制打印机.同时它可以加载各种切片软件,对各种3D模型 ...

  9. Mac上svn报错解决方案

    具体的报错信息为:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing ...

  10. 为什么ssh 执行完命令以后 挂了, hang , stop respond